- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
无法让 webpack 在 docker 中捆绑 react.js。
我的 webpack 配置和前端包正确。这个问题与 docker 集成有关。
当我在 docker 容器启动之前或容器启动时运行 webpack 时,webpack 会生成捆绑包并将它们复制到容器中。这行得通,我可以这样开发,但感觉很草率。
相反,我希望 npm run build 在 docker 容器内以生产模式运行 webpack。如果我只是说 docker-compose build and up,它会自行生成捆绑包。
我已经有一个带有 django 后端工作的 docker 容器。我所需要的只是让 webpack 使用 babel 转译 djangoproj/static/js 中的 react 代码并将其移动到 djangoproj/static/bundles。将文件捆绑到该文件夹后,django 端的其余部分就可以工作并呈现页面。
值得注意的是,除了 404 之外,我没有收到错误,因为捆绑包不存在。我在控制台中的输出显示 webpack 使用 babel 进行转译,然后捆绑代码。
但是,在 django 容器上执行 docker ps 和 docker exec 之后,不会生成捆绑包。 node_modules 也没有安装在/app/目录中。节点模块在/tmp/目录中安装良好,但无法复制到/app/。
另一个担忧或问题是,我是否应该在单独的容器中处理此捆绑?对我来说,将它保存在 django 容器中似乎更容易,它只是运行 webpack 来捆绑。所以如果没有必要,我不想要另一个容器的开销,对吧?我可以想象,因为它必须被复制到 django 容器中的静态文件夹中,另一个用于捆绑的单独容器会更糟。
感谢您的任何建议。
这是我试图管理这个的配置:
var path = require("path");
var webpack = require('webpack');
var BundleTracker = require('webpack-bundle-tracker');
module.exports = {
mode: 'development',
context: __dirname,
entry: {
'index': './sam_site/static/js/index.js',
'about': './sam_site/static/js/about.js',
'project': './sam_site/static/js/project.js',
},
output: {
path: path.resolve('./sam_site/static/bundles'),
filename: "[name]-[hash].js",
},
plugins: [
new BundleTracker({filename: './sam_site/webpack-stats.json'}),
],
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: ['babel-loader']
}
]
},
resolve: {
extensions: ['*', '.js', '.jsx']
}
};
{
"name": "sam_site",
"version": "1.0.0",
"description": "It's my site.",
"main": "index.js",
"directories": {
"doc": "docs"
},
"scripts": {
"start": "webpack-dev-server --host 0.0.0.0 --inline --content-base .",
"build": "webpack --config webpack.config.js --progress --colors --mode production",
"watch": "webpack --config webpack.config.js --watch --mode development"
},
"author": "Samuel Piecz",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.5.5",
"@babel/preset-env": "^7.5.5",
"@babel/preset-react": "^7.0.0",
"babel-loader": "^8.0.6",
"webpack": "^4.39.2",
"webpack-bundle-tracker": "^0.4.2-beta",
"webpack-cli": "^3.3.7"
},
"dependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0"
}
}
{
"presets": [
"@babel/env",
"@babel/react"
]
}
version: '3'
volumes:
local_postgres_data: {}
local_postgres_data_backups: {}
services:
django: &django
build:
context: .
dockerfile: ./compose/local/django/Dockerfile
image: sam_site_local_django
depends_on:
- postgres
volumes:
- .:/app
env_file:
- ./.envs/.local/.django
- ./.envs/.local/.postgres
ports:
- "8000:8000"
command: /start
postgres:
build:
context: .
dockerfile: ./compose/production/postgres/Dockerfile
image: sam_site_production_postgres
volumes:
- local_postgres_data:/var/lib/postgresql/data
- local_postgres_data_backups:/backups
env_file:
- ./.envs/.local/.postgres
redis:
image: redis:5.0
celeryworker:
<<: *django
image: sam_site_local_celeryworker
depends_on:
- redis
- postgres
ports: []
command: /start-celeryworker
celerybeat:
<<: *django
image: sam_site_local_celerybeat
depends_on:
- redis
- postgres
ports: []
command: /start-celerybeat
flower:
<<: *django
image: sam_site_local_flower
ports:
- "5555:5555"
command: /start-flower
FROM python:3.6-alpine
ENV PYTHONUNBUFFERED 1
RUN apk update \
# psycopg2 dependencies
&& apk add --virtual build-deps gcc python3-dev musl-dev \
&& apk add postgresql-dev \
# Pillow dependencies
&& apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \
# CFFI dependencies
&& apk add libffi-dev py-cffi \
# Translations dependencies
&& apk add gettext \
# https://docs.djangoproject.com/en/dev/ref/django-admin/#dbshell
&& apk add postgresql-client \
# NPM
&& apk add --update npm
# Npm & webpack goodness
WORKDIR /app
COPY . /app
CMD npm install
CMD npm audit fix
CMD npm run build
# Requirements are installed here to ensure they will be cached.
COPY ./requirements /requirements
RUN pip install -r /requirements/local.txt
COPY ./compose/production/django/entrypoint /entrypoint
RUN sed -i 's/\r$//g' /entrypoint
RUN chmod +x /entrypoint
COPY ./compose/local/django/start /start
RUN sed -i 's/\r$//g' /start
RUN chmod +x /start
COPY ./compose/local/django/celery/worker/start /start-celeryworker
RUN sed -i 's/\r$//g' /start-celeryworker
RUN chmod +x /start-celeryworker
COPY ./compose/local/django/celery/beat/start /start-celerybeat
RUN sed -i 's/\r$//g' /start-celerybeat
RUN chmod +x /start-celerybeat
COPY ./compose/local/django/celery/flower/start /start-flower
RUN sed -i 's/\r$//g' /start-flower
RUN chmod +x /start-flower
WORKDIR /app
ENTRYPOINT ["/entrypoint"]
.*
!.coveragerc
!.env
!.pylintrc
!.babelrc
node_modules
最佳答案
您的 volumes:
正在打破这个设置。删除将内容绑定(bind)到 /app
的行在你的容器中。
您在此处显示的 Dockerfile 序列将创建一个镜像,该镜像将您的本地源代码树复制到 /app
并运行 npm run build
在上面。这发生在 docker-compose.yml
中的大多数设置之前。 ,包括 volumes:
, 考虑。然后 Compose 启动一个容器,该容器获取该图像并将当前目录绑定(bind)到 /app
。 ,隐藏构建过程中发生的一切。
如果您需要实时开发环境,我建议直接使用您的主机系统工具(Python 虚拟环境,npm run start
);这很好用,并且避免了 Docker 在此处添加的所有复杂性。
我不会添加单独的容器来执行构建时任务。在 Dockerfile 中执行这些任务更有意义,或者对于主机依赖很少的事情(如 Webpack)直接在主机上运行它们。
一种可能对此类情况有所帮助的技巧是使用 multi-stage build :在你的 Dockerfile 中有多个部分,分别打包应用程序及其 UI,然后将它们组合在一起。
FROM python:3.6-alpine AS wheel
...
WORKDIR /app
COPY . .
RUN pip wheel
FROM node:12 AS webpack
WORKDIR /app
COPY . .
RUN npm install && npm run build
FROM python:3.6-alpine
WORKDIR /app
COPY --from=wheel /app/dist/wheel/myapp-*.whl .
RUN pip install myapp-*.whl
COPY --from=webpack /app/dist dist
COPY ./compose/... .
CMD ["/app/entrypoint"]
-dev
像你上面显示的包,但最终的图像只需要安装相应的库包,而不是完整的 C 工具链。
关于django - Docker 和 webpack 包在本地生成,但不在容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59548428/
通过终端,您可以使用命令 - “SetFile -a B 文件名” 以编程方式,我认为我应该通过[[NSFileManager defaultManager] createDirectoryAtPat
嗨,正在尝试书中的一些示例:Practical Graph mining with R对于子图挖掘: library(subgraphMining) library(igraph) graph1 =
代码中的相同问题: class Foo { int getIntProperty () { ... } CustomObject getObjectProperty () { ... }
所以这可能是一个愚蠢的问题,但它已经困扰我一段时间了。 使用 React,我创建了两个组件(Buttons.js 和 Message.js),每个组件都有一个导出。但是,现在我希望将这两个组件用作 n
从今天早上开始,我发现我无法再从某个范围安装任何 NPM 包(或任何具有依赖项的包)。例如,如果我输入 npm i webpack 我会收到以下错误... npm ERR! code E401 npm
我在这里搜索过,Angular 2, @ngtools/webpack, AOT ,但对我不起作用。我运行了 npm install 命令。我正在做的是创建一个新的 Angular 2 项目。当我运行
情况: 我有一个 Swift 包,将其命名为 lib。 lib 位于其自己的存储库中。在lib的仓库中,有一堆本地包;也就是说,这些包是在 lib 中定义的,使用本地路径依赖格式 .package(p
我想在工作中学习和使用nodejs,但是在使用 de npm 命令安装模块/包时遇到网络问题。我是否可以使用我的家用计算机构建完整的 Node js 包,然后将其安装在另一台计算机(我的工作场所计算机
我需要将一些 .tar.bz2 格式的非 Python 包转换为 Anaconda/miniConda .egg 文件并安装它们。为此,我需要一个适用于 Windows 的 bld.bat 文件。互联
我需要共享库文件 libthrift-0.9.3.so 作为其他包的依赖项。我在构建 thrift-0.9.3 包时看到编译问题(我确实从 https://thrift.apache.org/down
我尝试在 R 版本 3.5.0 中安装“arcgisbinding”包。但是我失败了,得到以下错误和警告。 Installing package into ‘C:/Users/Lenovo/Docum
我尝试在 R 版本 3.5.0 中安装“arcgisbinding”包。但是我失败了,得到以下错误和警告。 Installing package into ‘C:/Users/Lenovo/Docum
我试图在 flutter 中测试这个应用程序,但我无法运行该应用程序,因为出现此错误“名称‘Page’在库‘package:burn_off/widgets/page.dart’和‘package’中
试图理解和学习如何编写包...用我一直使用的东西进行测试,记录... 您能帮我理解为什么“日志”变量不起作用...并且屏幕上没有日志记录吗? 谢谢! 主要文件: #!/opt/local/bin/py
我尝试运行此使用 Google 云的代码。 import signal import sys from google.cloud import language, exceptions # creat
我想知道是否有人找到了一个很好的 R 包来分析眼动追踪数据? 我遇到了 eyetrackR,但据我所知,没有可用的英文支持文档: http://read.psych.uni-potsdam.de/pm
我正在 R 上制作一个包。我有两个函数共享一个变量(全局)。 如何将其导入到包中? 例如, m<-0 f<-function() { m <- m+1 } g<-function() { m <- m
我用 C 为 Lua 编写了很多模块。每个模块都包含一个 Lua 用户数据类型,我像这样加载和使用它们: A = require("A") B = require("B") a = A.new(3,{
我正在尝试在 R 中的 Ubuntu 上安装 xlsx 包,以便使用允许在 R 中插入链接然后将它们导出到 Excel 的功能。 话虽如此,我根本无法安装该软件包。 显然它必须与 rJava 一起使用
我想在 Haskell 中做一些蒙特卡洛分析。我希望能够编写这样的代码: do n <- poisson lambda xs <- replicateM n $ normal mu sigma
我是一名优秀的程序员,十分优秀!