Добрый день!
Есть docker-compose.yml файл:
version: "3.5"
services:
nginx:
image: nginx:latest
depends_on:
- my-app
- my-admin
ports:
- 80:80
volumes:
- /home/project/data/nginx/conf.d:/etc/nginx/conf.d
- /home/project/public:/var/public
- my-admin-volume:/usr/src/app
networks:
- my-network
deploy:
placement:
constraints: [node.role == manager]
my-admin:
image: my-admin
env_file:
- /home/project/ucell.env
ports:
- 9000:9000
depends_on:
- mariadb
- redis
- mongodb
working_dir: /usr/src/app
volumes:
- /home/project/data/log:/var/log/container
- /home/project/public:/usr/src/app/storage/app/public
- my-admin-volume:/usr/src/app
networks:
- my-network
volumes:
my-admin-volume:
networks:
my-network:
Запускаю docker stack командой:
docker stack deploy -c docker-compose.yml prod
Все создается и работает хорошо. Но когда надо обновить образ my-admin, я запускаю команду:
docker service update --image my-admin:v2 prod_my-admin --force
(v2 здесь к примеру).
То volume с названием prod_my-admin-volume содержит старые файлы из старого образа my-admin:v1. (При создание стека в название volume docker сам добавляет префикс prod_)
Для того чтоб обновить содержимого volume делаю:
docker service update --mount-add type=volume,source=prod_my-admin-volume,target=/usr/src/app prod_my-admin
docker service update --mount-add type=volume,source=prod_my-admin-volume,target=/usr/src/app prod_nginx
Но все равно не обновляется.
Но если удалить запущенный стек, volume с названием prod_my-admin-volume
и заново создать стек то все новые файлы видны.
Вопрос: Как можно обновить содержимое примонтированного volume без пересоздания стека? Кто нибудь сталкивался с такой ситуацией? Если можно укажите в какую сторону копать?!
Заранее большое спасибо!