我无法让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"]