Можно ли использовать Docker's COPY
или RUN cp
в Dockerfile для перезаписи файла конфигурации по умолчанию версией файла, специфичной для Docker?
В проекте Rails наша папка конфигурации имеет несколько версийфайла database.yml для разных сред:
# projectname/config/
database.yml # an unused default placeholder
database_for_docker_2.yml
database_for_vagrant.yml
Для разных сред разработки (vagrant + virtualbox vs docker) во время инициализации машины / контейнера мы копируем соответствующую версию .yml в database.yml
В файле Docker после этого раздела:
WORKDIR /my_app
RUN bundle install
COPY . /my_app
мы пытались:
RUN cp ./config/database_docker_2.yml /my_app/config/database.yml
, но файл, похоже, не копируется, когда мы раскручиваем контейнер, используется версия по умолчанию для database.yml.
Затем мы попробовали:
COPY ./config/database_docker_2.yml /my_app/config/database.yml
файл по-прежнему не копируется, версия файла по умолчанию используется, когда мы вращаемсявверх контейнер.
Что работает, так это добавление еще одной записи в раздел тома docker-compose.yml специально для этого одного файла:
volumes:
- .:/my_app
- ./config/database_docker_2.yml:/my_app/config/database.yml
, но мы предпочитаем управлять размещением специфичных для env версий файлов в Dockerfile (в отличие от засорения docker-compose.yml такими файлами, специфичными для env)