#docker #persist #volumes
Вопрос:
Я не уверен, что делаю что-то не так. Я уже просматривал другой аналогичный пост в StackOverflow, но я не вижу, в чем проблема.
Это мой файл docker-compose:
## APP
nodeServer:
build:
context: .
dockerfile: ./config/node-express/Dockerfile
image: node-mysql-app
restart: unless-stopped
stdin_open: true
tty: true
ports:
- 3000:3000
- 8745:8745
volumes:
- .:/home/dockeruser/src
# - node_modules:/home/dockeruser/src/node_modules
depends_on:
- mysqldb
restart: unless-stopped
volumes:
node_modules:
И мой док-файл
FROM node:14.4-alpine3.11
RUN apk add --no-cache python g make
ENV NODE_ENV=development
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install --production
RUN apk update amp;amp; apk add bash
RUN addgroup -g 1010 -S docker amp;amp;
adduser -u 1010 -S dockuser -G docker
USER dockuser
COPY . /home/dockuser/src
WORKDIR /home/dockuser/src
EXPOSE 3000 8745
CMD ["/bin/sh", "entrypoint.sh"]
Я запускаю файл docker-compose.yml в корневом каталоге приложения, что означает, что у меня есть весь код приложения. Файл docker находится по этому пути:
dockerfile: ./config/node-express/Dockerfile
После запуска этого приложения приложение нормально работает в порту 3000, и я могу выполнить контейнер и просмотреть код, но если я что-то изменю на хосте, контейнер не будет обновлен. Я также не могу видеть node_модули, созданные при запуске файла Dockerfile:
"docker-compose build --no-cache"
"docker-compose up"
Сначала я всегда удаляю контейнеры и тома на всякий случай.
Ответ №1:
Я решил проблему, выполнив эти изменения.
Файл закрепления:
WORKDIR /usr/src/app
COPY . .
докер-compose.yml
volumes:
- .:/usr/src/app
Я не уверен в причине, но это работает.