Docker化React-Node Express应用-无法建立客户端容器

问题描述 投票:1回答:1

我正在尝试对基于React和Node / Express的应用进行docker化。当我运行命令docker-compose up --build时,我在终端中得到以下内容

enter image description here

并且当我运行docker ps时,只有server-app容器已启动并正在运行(因此client-app无法成功构建吗?)。同样,当我运行docker-compose exec输入执行的容器时,在该容器内没有创建任何客户端应用程序。有什么想法我做错了吗?

这是文件夹结构的样子

enter image description here

这些是我的docker文件

docker-compose.yml

version: "3"

services:
  server:
    container_name: server-app
    build:
      context: ./server
      dockerfile: Dockerfile
    command: nodemon --inspect server.js
    ports:
      - "5000:5000"
    volumes:
      - "./server/:/app/server"
      - "/app/server/node_modules"
    networks:
      - appnet
  client:
    container_name: client-app
    build:
      context: ./client
      dockerfile: Dockerfile
    volumes:
      - "./client/:/app/client"
      - "/app/client/node_modules"
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=development
    networks:
      - appnet
    depends_on:
      - server
networks:
  appnet:
    driver: "bridge"

服务器/ Dockerfile

FROM node:12.14-alpine
WORKDIR /app/server

# Install nodemon
RUN npm install -g nodemon

COPY ./package*.json ./
RUN npm install

COPY . .

CMD ["npm", "start"]

客户端/ Dockerfile

FROM node:12.16-alpine
WORKDIR /app/client

COPY ./package*.json ./
RUN npm install --silent
RUN npm install [email protected] -g --silent

COPY . .

CMD ["npm", "start"]
node.js reactjs docker express docker-compose
1个回答
0
投票

问题是客户端在服务器启动并准备就绪之前尝试连接到服务器。下面的配置不足以解决依赖项

 depends_on:
      - server

作为快速解决方案或解决方法,您可以将此行添加到客户端配置中

restart: always

更好的解决方案是为您的客户实施wait_for,以更新您的client/Dockerfile

FROM node:12.16-alpine
WORKDIR /app/client

COPY ./package*.json ./
RUN npm install --silent
RUN npm install [email protected] -g --silent

COPY . .
COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]

添加docker-entrypoint.sh(chmod a + x)

#!/bin/sh -e
until nc -vz server:5000 > /dev/null; do
    >&2 echo "server:5000 is unavailable - sleeping"
    sleep 2
  done
  >&2 echo "server is up"

npm start
exit 0
© www.soinside.com 2019 - 2024. All rights reserved.