执行 npm 运行 构建命令后反应应用 docker 容器 exits/restarts
React app docker container exits/restarts after executing npm run build command
Docker 文件:
FROM node:14
WORKDIR /code
COPY ./code/package.json ./code/package-lock.json /code/
RUN npm install
COPY ./code /code
CMD [ "npm", "run", "build"]
docker-compose.yml:
version: '3'
services:
medace-lecture-capsules:
build: ./app
container_name: medace-lecture-capsules
restart: always
expose:
- "3000"
networks:
- shared
networks:
shared:
external:
name: shared
docker-撰写日志:
Attaching to medace-lecture-capsules
medace-lecture-capsules |
medace-lecture-capsules | > medace-frontend-lecture-capsules@0.1.0 build /code
medace-lecture-capsules | > react-scripts build
medace-lecture-capsules |
medace-lecture-capsules | Creating an optimized production build...
medace-lecture-capsules | Compiled successfully.
medace-lecture-capsules |
medace-lecture-capsules | File sizes after gzip:
medace-lecture-capsules |
medace-lecture-capsules | 130.34 KB build/static/js/2.dd4b4a7b.chunk.js
medace-lecture-capsules | 3.83 KB build/static/js/main.725c12bb.chunk.js
medace-lecture-capsules | 970 B build/static/css/main.aae65096.chunk.css
medace-lecture-capsules | 791 B build/static/js/runtime-main.15e7259b.js
medace-lecture-capsules |
medace-lecture-capsules | The project was built assuming it is hosted at /.
medace-lecture-capsules | You can control this with the homepage field in your package.json.
medace-lecture-capsules |
medace-lecture-capsules | The build folder is ready to be deployed.
medace-lecture-capsules | You may serve it with a static server:
medace-lecture-capsules |
medace-lecture-capsules | npm install -g serve
medace-lecture-capsules | serve -s build
medace-lecture-capsules |
medace-lecture-capsules | Find out more about deployment here:
medace-lecture-capsules |
medace-lecture-capsules | https://cra.link/deployment
medace-lecture-capsules |
我使用了 docker-compose 构建,然后是 docker-compose up -d,但是容器在创建构建后以某种方式设法退出。我想要 运行 一个生产服务器,这就是我使用 npm 运行 build 的原因。
尝试了 serve -s build 但加载网页时出现 404 错误。
你的命令好像是你的编译命令
容器的 CMD 命令需要 运行 永远像
CMD node app.js
或者也许
命令 npm 开始
还有一些与您的问题无关的问题,如果您使用 npm install 我认为您的锁定文件将被忽略并重新生成。要准确安装锁定文件中的内容,请使用
RUN npm ci
抱歉 - 告诉您为什么它在我的 phone 上不起作用比告诉您如何让它起作用更容易
FROM node:14
WORKDIR /code
COPY ./code/package.json ./code/package-lock.json /code/
RUN npm ci # install what is in lock file no package file
COPY ./code /code
RUN npm run build
RUN npm install -g serve
CMD serve -s build 3000
然后如果你想尝试本地服务,你可以在你的项目中添加npm install serve
并保存包和包锁定文件,然后你就不必在全局安装serve
在你的容器中,它变成:
FROM node:14
WORKDIR /code
COPY ./code/package.json ./code/package-lock.json /code/
RUN npm ci # install what is in lock file no package file
COPY ./code /code
RUN npm run build
# the port for the following should match the one you are exposing with docker compose:
CMD ./node_modules/.bin/serve -s build 3000
将依赖项 serve
添加到项目后
Docker 文件:
FROM node:14
WORKDIR /code
COPY ./code/package.json ./code/package-lock.json /code/
RUN npm install
COPY ./code /code
CMD [ "npm", "run", "build"]
docker-compose.yml:
version: '3'
services:
medace-lecture-capsules:
build: ./app
container_name: medace-lecture-capsules
restart: always
expose:
- "3000"
networks:
- shared
networks:
shared:
external:
name: shared
docker-撰写日志:
Attaching to medace-lecture-capsules
medace-lecture-capsules |
medace-lecture-capsules | > medace-frontend-lecture-capsules@0.1.0 build /code
medace-lecture-capsules | > react-scripts build
medace-lecture-capsules |
medace-lecture-capsules | Creating an optimized production build...
medace-lecture-capsules | Compiled successfully.
medace-lecture-capsules |
medace-lecture-capsules | File sizes after gzip:
medace-lecture-capsules |
medace-lecture-capsules | 130.34 KB build/static/js/2.dd4b4a7b.chunk.js
medace-lecture-capsules | 3.83 KB build/static/js/main.725c12bb.chunk.js
medace-lecture-capsules | 970 B build/static/css/main.aae65096.chunk.css
medace-lecture-capsules | 791 B build/static/js/runtime-main.15e7259b.js
medace-lecture-capsules |
medace-lecture-capsules | The project was built assuming it is hosted at /.
medace-lecture-capsules | You can control this with the homepage field in your package.json.
medace-lecture-capsules |
medace-lecture-capsules | The build folder is ready to be deployed.
medace-lecture-capsules | You may serve it with a static server:
medace-lecture-capsules |
medace-lecture-capsules | npm install -g serve
medace-lecture-capsules | serve -s build
medace-lecture-capsules |
medace-lecture-capsules | Find out more about deployment here:
medace-lecture-capsules |
medace-lecture-capsules | https://cra.link/deployment
medace-lecture-capsules |
我使用了 docker-compose 构建,然后是 docker-compose up -d,但是容器在创建构建后以某种方式设法退出。我想要 运行 一个生产服务器,这就是我使用 npm 运行 build 的原因。 尝试了 serve -s build 但加载网页时出现 404 错误。
你的命令好像是你的编译命令
容器的 CMD 命令需要 运行 永远像
CMD node app.js
或者也许 命令 npm 开始
还有一些与您的问题无关的问题,如果您使用 npm install 我认为您的锁定文件将被忽略并重新生成。要准确安装锁定文件中的内容,请使用
RUN npm ci
抱歉 - 告诉您为什么它在我的 phone 上不起作用比告诉您如何让它起作用更容易
FROM node:14
WORKDIR /code
COPY ./code/package.json ./code/package-lock.json /code/
RUN npm ci # install what is in lock file no package file
COPY ./code /code
RUN npm run build
RUN npm install -g serve
CMD serve -s build 3000
然后如果你想尝试本地服务,你可以在你的项目中添加npm install serve
并保存包和包锁定文件,然后你就不必在全局安装serve
在你的容器中,它变成:
FROM node:14
WORKDIR /code
COPY ./code/package.json ./code/package-lock.json /code/
RUN npm ci # install what is in lock file no package file
COPY ./code /code
RUN npm run build
# the port for the following should match the one you are exposing with docker compose:
CMD ./node_modules/.bin/serve -s build 3000
将依赖项 serve
添加到项目后