Docker образ работает с docker, но не с docker - составьте - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть изображение gatsby docker, которое работает, как и ожидалось, при запуске с docker run, но когда я запускаю его с docker-compose up, я получаю следующую ошибку:

There was a problem loading the local develop command. Gatsby may not be installed in your site's "node_modules" directory. Perhaps you need to run "npm install"? You might need to delete your "package-lock.json" as well. 

My Dockerfile выглядит так:

FROM node:12-buster

RUN npm install --global gatsby-cli && gatsby telemetry --disable

WORKDIR /app

COPY package*.json /app/

RUN npm install --force

COPY . .

EXPOSE 8000

CMD ["npm", "run", "develop"]

Файл составления выглядит следующим образом:

   frontend:
    build: frontend
    image: frontend
    volumes:
      - ./frontend:/app
    ports:
      - "8000:8000"
    depends_on:
      - backend

1 Ответ

1 голос
/ 29 февраля 2020

Изображение будет работать нормально, когда код находится в контексте сборки, потому что все команды RUN будут выполняться во время docker процесса создания образа.

Когда вы создаете экземпляр изображения, как вы делаете на docker -compose, вы не работаете:

RUN npm install --force

, потому что он был выполнен во время сборки образа. Нет во время запуска контейнера.

Итак, для решения вашей проблемы и рассмотрения того, как был построен ваш образ, вам не нужно включать том, вместо этого включать код в качестве контекста сборки.

version: "3.7"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile

https://docs.docker.com/compose/compose-file/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...