我将我的代码库转换为Docker格式。
我有一个docker-compose文件,其中包含以下命令:
我还添加了卷,所以当我改变代码时,它会反映在我的容器中,这也很好用(尽管热重载不太重要)。
现在,我通常只需在我的docker-compose文件中注释掉以下行:
我不确定是否存在与卷相关的问题,即它在容器中被构建,但我无法从我的计算机中访问它(我认为这是不可能的,因为在本地计算机上更改代码确实会反映在我的容器中),或者由于某种原因根本没有被构建。
这是
我的webpack配置文件开头如下所示:
我有一个docker-compose文件,其中包含以下命令:
command: bash -c "rm -rf node_modules && npm install && npm run dev"
一切都很正常,我使用rm -rf node_modules
因为它给我一些缺失软件包的错误(来自我的MAC)。这样做只是重新创建它,并且在本地主机上运行得很好。我还添加了卷,所以当我改变代码时,它会反映在我的容器中,这也很好用(尽管热重载不太重要)。
现在,我通常只需在我的docker-compose文件中注释掉以下行:
command: bash -c "rm -rf node_modules && npm install && npm run dev"
,然后添加:
command: bash -c "rm -rf node_modules && npm install && npm run build"
来构建我的捆绑包,在生产环境中不需要node。但是,这并没有给我任何结果。我不确定是否存在与卷相关的问题,即它在容器中被构建,但我无法从我的计算机中访问它(我认为这是不可能的,因为在本地计算机上更改代码确实会反映在我的容器中),或者由于某种原因根本没有被构建。
这是
command: bash -c "rm -rf node_modules && npm install && npm run build --verbose"
输出的结果。NODE | npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.3 (node_modules/fsevents):
NODE | npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
NODE |
NODE | added 115 packages in 11.036s
NODE | npm info it worked if it ends with ok
NODE | npm verb cli [ '/usr/local/bin/node',
NODE | npm verb cli '/usr/local/bin/npm',
NODE | npm verb cli 'run',
NODE | npm verb cli 'build',
NODE | npm verb cli '--verbose' ]
NODE | npm info using npm@5.5.1
NODE | npm info using node@v9.2.0
NODE | npm verb run-script [ 'prebuild', 'build', 'postbuild' ]
NODE | npm info lifecycle frontend@1.0.0~prebuild: frontend@1.0.0
NODE | npm info lifecycle frontend@1.0.0~build: frontend@1.0.0
NODE |
NODE | > frontend@1.0.0 build /code/client
NODE | > cross-env NODE_ENV=production webpack --progress --hide-modules
NODE |
NODE | Hash: cda5e46c2c7f4ba2903b
NODE | Version: webpack 3.9.1
NODE | Time: 27298ms
NODE | Asset Size Chunks Chunk Names
NODE | build.js 1.29 MB 0 [emitted] [big] main
NODE | build.js.map 7.65 MB 0 [emitted] main
NODE | npm verb lifecycle frontend@1.0.0~build: unsafe-perm in lifecycle true
NODE | npm verb lifecycle frontend@1.0.0~build: PATH: /usr/local/lib/node_modules/npm/bin/node-gyp-bin:/code/client/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
NODE | npm verb lifecycle frontend@1.0.0~build: CWD: /code/client
NODE | npm info lifecycle frontend@1.0.0~postbuild: frontend@1.0.0
NODE | npm verb exit [ 0, true ]
NODE | npm info ok
我的webpack配置文件开头如下所示:
var path = require('path')
var webpack = require('webpack')
module.exports = {
entry: './src/main.js',
output: {
path: path.resolve(__dirname, '../static/dist/'),
publicPath: '/dist/',
filename: 'build.js'
},
至少之前这个方法是有效的,因为我的应用程序看起来是这样的:
- manage.py
- static
- dist
- others
- client
- webpack.config.js
为什么dist中没有任何文件被构建?
更新
我使用了exec命令查看容器内部,但是我找不到build.js文件。我还在/code/static/dist目录下运行了touch abc.txt命令,在本地主机上也创建了该文件,即数据卷正常工作。这必须是webpack而不是docker的问题。
更新2
我还尝试了完整路径,如下所示,但仍然没有结果:
module.exports = {
entry: './src/main.js',
output: {
path: path.resolve(__dirname, '/code/static/dist'),
publicPath: '/dist/',
filename: 'build.js'
},
编辑 3
我试图查找 build.js 文件,但我发现了这些文件,但我认为那些不是我的 build.js 文件:
root@0xxxxxx:/code# find . -name build.js
./client/node_modules/node-forge/nodejs/build.js
./client/node_modules/errno/build.js
./client/node_modules/vue-template-compiler/build.js
./client/node_modules/builtin-status-codes/build.js
./client/node_modules/webpack-dev-middleware/node_modules/mime/src/build.js
./client/node_modules/node-gyp/lib/build.js
./client/node_modules/node-sass/scripts/build.js
./client/node_modules/mime/build/build.js
./client/node_modules/npm/node_modules/node-gyp/lib/build.js
./client/node_modules/npm/node_modules/sorted-union-stream/node_modules/from2/node_modules/readable-stream/node_modules/isarray/build/build.js
./client/node_modules/npm/lib/install/action/build.js
./client/node_modules/npm/lib/build.js