如何使用docker-compose和多个dockerfile设置上下文

时间:2018-08-14 18:28:31

标签: node.js reactjs docker docker-compose

我无法让docker-compose与快速后端和create-react-app前端一起工作。 (伴随prisma和数据库一起使用)问题似乎是我从父文件夹运行docker-compose,即使我在构建时将前端和后端指定为上下文,它似乎也可以在父上下文中运行。

这意味着,首先,除非我在全局运行它们,否则我无法调用任何作为开发依赖而安装的软件包(如webpack),但是主要问题在于,由于它们是从父上下文运行的,因此像webpack因为他们找不到我的dist目录而感到困惑,因为他们的基本目录是父目录而不是子目录。我怎样才能解决这个问题?上下文似乎不起作用。

version: '3'
services:
  ...
  #prisma and postgres details
  ...
  backend:
    restart: always
    container_name: backend
    build:
      context: ./backend
    ports:
      - '4000:4000'
    links:
      - prisma
    depends_on:
      - prisma
    volumes:
      - ./backend:/app
  frontend:
    restart: always
    container_name: frontend
    build:
      context: ./frontend
    ports:
      - '3000:3000'
    links:
      - backend
    depends_on:
      - backend
    volumes:
      - ./frontend:/app

这是我的backend / package.json文件。奇怪的是,我必须在全球范围内安装一堆npm软件包,因为显然CMD不在正确的上下文中运行它。 docker:start命令为:prisma deploy && concurrently "webpack --watch --mode development" "nodemon dist/main.js"

FROM mhart/alpine-node:8.11.3
USER root

RUN mkdir -p /app
WORKDIR /app

RUN npm config set unsafe-perm true

COPY package.json /app/package.json
RUN npm install
RUN npm install -g prisma nodemon concurrently webpack webpack-cli

COPY . /app
CMD ["npm", "run", "docker:start"]

这是我的前端dockerfile,npm start是react-scripts start命令。

FROM mhart/alpine-node:8.11.3
USER root

RUN mkdir -p /app
WORKDIR /app

RUN npm config set unsafe-perm true
RUN npm install -g react-scripts

COPY package.json /app
RUN npm install
COPY . /app
CMD ["npm", "start"]

0 个答案:

没有答案