我正在制作的应用程序是用 ES6 编写的,其他好东西是由 Docker 容器内的 webpack 转译的。目前,一切工作从创建内部目录、安装依赖项到创建编译的捆绑文件。
当运行容器时,它说 dist/bundle.js 不存在。除非我在主机目录中创建捆绑文件,否则它将起作用。
我尝试为 dist 目录创建一个卷,它第一次工作,但在进行更改和重建后,它不会接受新的更改。
我想要实现的是构建容器并运行编译后的包。我不确定 webpack 部分是否应该作为构建步骤或在运行时放在 Dockerfile 中,因为CMD ["yarn", "start"]
崩溃但是RUN ["yarn", "start"]
works.
如有任何建议和帮助,我们将不胜感激。提前致谢。
|_src
|_index.js
|_dist
|_bundle.js
|_Dockerfile
|_.dockerignore
|_docker-compose.yml
|_webpack.config.js
|_package.json
|_yarn.lock
docker-compose.yml
version: "3.3"
services:
server:
build: .
image: selina-server
volumes:
- ./:/usr/app/selina-server
- /usr/app/selina-server/node_modules
# - /usr/app/selina-server/dist
ports:
- 3000:3000
Dockerfile
FROM node:latest
LABEL version="1.0"
LABEL description="This is the Selina server Docker image."
LABEL maintainer="AJ [email protected] /cdn-cgi/l/email-protection"
WORKDIR "/tmp"
COPY ["package.json", "yarn.lock*", "./"]
RUN ["yarn"]
WORKDIR "/usr/app/selina-server"
RUN ["ln", "-s", "/tmp/node_modules"]
COPY [".", "./"]
RUN ["yarn", "run", "build"]
EXPOSE 3000
CMD ["yarn", "start"]
.dockerignore
.git
.gitignore
node_modules
npm-debug.log
dist
包.json
{
"scripts": {
"build": "webpack",
"start": "node dist/bundle.js"
}
}