docker-compose volumes Затирает копирование через COPY
Primary tabs
Затирание происходит, только если копирование с помощью COPY выполняется в ту же папку, на которую потом после запуска будут применены volumes из docker-compose,
например, у вас тако Dockerfile:
WORKDIR "/var/www/html/site" #......разные команды WORKDIR "~" COPY cmdrun.sh cmdrun.sh RUN chmod +x cmdrun.sh CMD ./cmdrun.sh
И такой docker-compose:
version: '3.7'
services:
web:
build: ./
container_name: other_doc_dir_full_1
ports:
- "29927:22"
volumes:
- '../:/var/www/html/site'
networks:
frontnet2:
ipv4_address: 172.89.1.2 -- при такой конфигурации CMD ./cmdrun.sh будет не найден и потому не запустится, проблема в том, что смена рабочей директории:
WORKDIR "~"
-- на самом деле будет воспринята как смена на адрес (как будто он относительный):
WORKDIR "/var/www/html/site/~"
Поэтому главная идея состоит в том, что если вы хотите копировать файлы в Dockerfile вы не должны потом на эти же папки применять команду volumes из docker-compose /
В данном случае возможным решением может служить использование для bash-скрипта отдельной директории, лежащей не внутри директории из volumes:
WORKDIR "/var/www/html/site" #......разные команды WORKDIR "/var/www/run" COPY cmdrun.sh cmdrun.sh RUN chmod +x cmdrun.sh CMD ./cmdrun.sh
На ту же тему - обсуждения и решения
О проблеме затирания https://stackoverflow.com/a/32785014
- Log in to post comments
- 2701 reads