【问题标题】:Docker-Compose for react and flask execute the containers with docker-compose upDocker-Compose 用于反应和烧瓶使用 docker-compose up 执行容器
【发布时间】:2020-05-28 04:02:38
【问题描述】:

我使用 docker-compose 构建我的烧瓶和反应图像,但是当我运行 docker-compose 命令时,我的烧瓶容器已启动但我的反应容器未激活,为了激活它,我运行了命令运行图像,我不知道为什么会发生这种情况,希望您能解释一下原因。

我的 docker-compose.yml

version: '3'

services:
  cloud-flask-back:
    container_name: flask
    build: ./Flask
    ports:
        - "5000:5000"
    volumes:
        - ./Flask:/cloud
    environment:
      FLASK_ENV: development
    restart: on-failure
  cloud-react-front:
    container_name: react
    build: ./cloud-front
    ports:
        - "3000:3000"
    volumes:
      - ./cloud-front:/cloud-front-end
    environment:
      NODE_ENV: development
      PORT: 3000
    restart: on-failure

我的 Dockerfile 用于反应

FROM node:14
# Create app directory
WORKDIR /cloud-front-end
# Install app dependencies
COPY package*.json ./

RUN npm install
# Copy app source code
COPY . .
EXPOSE 3000

CMD ["npm", "start"]

我希望你能帮助我。感谢阅读

【问题讨论】:

  • 你得到什么错误? volumes: 指令基本上覆盖了您显示的 Dockerfile 所做的所有事情(如果您不在本机 Linux 主机上,则会使用错误的架构树覆盖映像的 node_modules 目录);删除那个有帮助吗?

标签: reactjs docker docker-compose dockerfile containers


【解决方案1】:

我之前在尝试使用“节点”图像运行反应应用程序容器时看到过这个问题。我相信当我们尝试运行 docker-compose 时容器会启动和停止。

请尝试将 "stdin_open: true" 添加到 docker-compose.yml 中的“cloud-react-front”服务。这对我有用。

【讨论】:

  • 是否必须删除开发环境(NODE_ENV: development)变量?
  • 我认为您不需要删除环境变量。 stdin_open: true 会将 shell 锁定为与 react app 容器交互的模式。没有这个,容器会自动停止。
【解决方案2】:

cloud-react-front 中的附加卷将使用主机卷覆盖容器中的所有文件,因此容器没有可用的 node_modules。

我假设您正在开发中运行此设置。 尝试运行:docker-compose run cloud-react-front npm install 它会将 node_modules 添加到您的主机

然后尝试:docker-compose up,它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 2019-04-22
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多