Docker-compose не выполняет snyc и не применяет изменения к контейнеру docker

#docker #docker-compose #dockerfile

#docker #docker-compose #dockerfile

Вопрос:

Мой вопрос в том, почему каждый раз, когда у меня вносятся изменения в мою папку leavelab, это не отражается на моем контейнере. В моем контейнере есть nodemon, где он отслеживает мои изменения.

Это мой docker-compose.yml:

 version: "2"
services:
  app-rsync:
    build: ./docker
    volumes:
      - ./docker/leavelab:/usr/src/app # will be mounted on /usr/src/app/leavelab
  

Это мой файл Dockerfile:

 FROM alpine:3.8
EXPOSE 3000
LABEL org.label-schema.schema-version="1.0"
LABEL org.label-schema.docker.cmd="docker run -d -p 3000:3000 --name alpine_leavelab"
RUN apk add --no-cache 
    git 
    make 
    nodejs npm 
    python 
    vim
RUN npm install -g nodemon
RUN adduser --system app --home /app
USER app
WORKDIR /app
RUN mkdir /app/leavelab
COPY ./leavelab /app/leavelab
WORKDIR /app/leavelab
RUN npm install
CMD npm start
  

Комментарии:

1. Каталоги в вашем Dockerfile и docker-compose.yml не совпадают.

2. да, это не соответствует, но когда вы проверяете мой docker-compose: version: «2» services: app-rsync: build: ./docker, сборка указывает на ./ docker, что означает внутри папки docker.

3. Нет, я имею в виду, что в контейнере находятся две копии вашего приложения. /app это то, что поступает из Dockerfile и что будет выполняться в рабочей среде. /usr/src/app является зеркалом вашего локального дерева разработки.

4. да, я это видел. Я уже исправил это. 🙂 Спасибо за отзыв @David

Ответ №1:

Я интерпретирую тему следующим образом: docker-compose up не создает заново образ для указанного Dockerfile .

Мой ответ на эту проблему:

docker-compose up создает изображения только тогда, когда нет соответствующего изображения, например, при первом docker-compose up вызове. Вы можете принудительно выполнить сборку с помощью docker-compose up --build . Вы также могли бы вызвать docker-compose build перед вызовом docker-compose up .