Как правильно настроить контекст и запустить docker-compose (проблема с перемещением Dockerfile в другую директорию)

У проекта следующая структура:

введите сюда описание изображения

Пытаюсь запустить докер из корня проекта по команде: docker-compose -f docker/development/docker-compose.yml up --build
Сборка начинается, но потом получаю ошибку: введите сюда описание изображения

Содержание docker-compose.yaml:

version: '3.9'
services:
  app:
    container_name: vue-dev
    build:
      context: docker/development
      dockerfile: Dockerfile
    command: npm run dev
    restart: always
    ports:
      - 80:4444
      - '8081:8081'
    volumes:
      - .:/app
      - nodemodules:/app/node_modules
    stdin_open: true
    tty: true

volumes:
  nodemodules: {}

Содержание Dockerfile:

ARG NODE_VERSION=16-alpine

FROM node:${NODE_VERSION} as dev-stage

WORKDIR /app

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

COPY . .

EXPOSE 4444/tcp

CMD ["npm", "run", "dev"]

Подскажите как правильно настраивать docker файлы если они не в корне проекта?


Ответы (1 шт):

Автор решения: xzdwq

В docker/production/docker-compose.yml

version: '3.9'
services:
  app:
    container_name: vue-dev
    build:
      context: ../../
      dockerfile: docker/production/Dockerfile
    ports:
      - 80:4444
    environment:
      PORT: 4444
    stdin_open: true
    tty: true

Аналогично для docker/development/docker-compose.yml
Файлы Dockerfile оставить без изменений (не менять пути копирования)

Так же надо учесть что .dockerignore должен быть один и в корне

Запуск из корня для prod: docker-compose -f docker/production/docker-compose.yml up --build -d
Для dev: docker-compose -f docker/development/docker-compose.yml up --build

→ Ссылка