Docker react express ap在一个进程运行后未运行



Hi Dockerized了一个reactjs和expressjs项目,当我写了单独的docker compose文件时,一切都很好。

但现在我写了一个组成文件

docker-compose-all-dev.yml文件

version: '3.7'
services:
client:
container_name: react-dev
build:
context: ./client
dockerfile: Dockerfile.react-dev
ports:
- 3000:3000
server:
container_name: server-dev
build:
context: ./server
dockerfile: Dockerfile.server-dev
ports:
- 5000:5000

现在它只运行客户端服务器,为什么不运行后端服务器呢?

但当我在这样的两个不同文件中运行它时,它就可以工作了。

docker-compose-client.yml文件:

version: '3.7'
services:
client:
container_name: react-dev
build:
context: ./client
dockerfile: Dockerfile.react-dev
ports:
- 3000:3000

docker-compose-server.yml文件

version: '3.7'
services:
server:
container_name: server-dev
build:
context: ./server
dockerfile: Dockerfile.server-dev
ports:
- 5000:5000

有人能告诉我,当我在一个compose文件中运行时,不同时运行这两个应用程序可能会出现什么问题吗?我该怎么解决?

供您参考。

我的Dockerfile-server-dev文件

FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "server.js" ]

和我的Dockerfile.react-dev文件

FROM node:14.1-alpine as build
WORKDIR /app
COPY . /app
ENV PATH /app/node_modules/.bin:$PATH
RUN yarn config delete proxy
Run npm config rm proxy
RUN npm config rm https-proxy
RUN npm install
RUN npm start

我不知道实际在一个docker中运行两个开发服务器组成文件的问题是什么

至少有一些问题,您的Dockerfile.react-dev缺少入口点和CMD部分,您不应该使用RUN子句启动服务器。相反,使用Entrypoint和CMD来启动它。另一个问题是,您在Dockerfile-server-dev上暴露的端口与在撰写文件上暴露的不同。

解决了这个问题。

我只是添加了这一行:CMD ["npm", "start"]并删除了npm start,现在它正在中工作

最新更新