#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
.