docker-compose目录构建路径

时间:2020-04-23 04:59:23

标签: docker docker-compose microservices

我正在尝试将应用程序分为两个docker服务-前端和后端,其中我的项目布局与此相似。

| frontend
|  - ...
|  - Dockerfile.prod
| backend
|  - ...
|  - Dockerfile.prod
| docker-compose.yml

到目前为止,我只为前端编写了dockerfile

FROM node:13.12.0-alpine as build
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json ./
COPY package-lock.json ./
RUN npm ci --silent
RUN npm install react-scripts@3.4.1 -g --silent
COPY . ./
RUN npm run build

FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
COPY nginx/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

让我感到困扰的是,当我独立运行该映像时,所有内容都可以正常运行,但是当我尝试将其放入docker-compose.yml文件中时,此错误就会出现

$  docker-compose.exe up -d --build
Building frontend
Traceback (most recent call last):
  File "docker-compose", line 6, in <module>
  File "compose\cli\main.py", line 72, in main
  File "compose\cli\main.py", line 128, in perform_command
  File "compose\cli\main.py", line 1077, in up
  File "compose\cli\main.py", line 1073, in up
  File "compose\project.py", line 548, in up
  File "compose\service.py", line 351, in ensure_image_exists
  File "compose\service.py", line 1106, in build
  File "site-packages\docker\api\build.py", line 148, in build
TypeError: You must specify a directory to build in path
[12540] Failed to execute script docker-compose

我已经浏览了类似的问题,但是由于某种原因,他们的建议似乎都无法在我的情况下起作用。

这是我的docker-composer文件

version: '3'

services:
  frontend:
    container_name: react-prod
    build:
      context: .
      dockerfile: frontend/Dockerfile.prod
    ports:
      - 6666:80

1 个答案:

答案 0 :(得分:2)

在用于前端的Dockerfile中,您正在使用相对路径COPY . ./复制。

使用docker-compose进行构建时,您提供的上下文将为.,而不是其中包含Dockerfile的实际前端目录。 所以我只是建议也许您在docker-compose.yml中而不是:

    build:
      context: .
      dockerfile: frontend/Dockerfile.prod

您应该具有:

    build:
      context: ./frontend
      dockerfile: Dockerfile.prod