Обычный Docker и Docker Compose не имеют этой возможности. Вы можете создать файл вне Docker на хосте и смонтировать его в контейнер, как вы показываете, но ни у Docker, ни у Compose нет возможности шаблонизации, которая вам понадобится для этого.
Общий подход к вамВ описываемом вопросе строится настраиваемое изображение для каждого набора параметров конфигурации. На самом деле это не лучшая практика: представьте, что вам нужно перекомпилировать ls
, потому что вы подключили USB-накопитель, на который вам нужно было посмотреть.
Одна вещь, которую вы можете сделать в простом Docker, - научить образ создавать собственную конфигурациюфайл во время запуска. Вы можете сделать это с помощью сценария, например:
#!/bin/sh
# I am docker-entrypoint.sh
# Create the config file
cat >config/gradle-docker.properties <<EOF
username=$USERNAME
et=$CETERA
EOF
# Run the main container process
exec "$@"
В вашем Dockerfile, COPY
этот файл в образ и установить его как ENTRYPOINT
;оставьте свой CMD
без изменений. Вы должны использовать форму JSON-массива директивы ENTRYPOINT
.
...
COPY docker-entrypoint.sh .
RUN chmod +x docker-entrypoint.sh
ENTRYPOINT ["./docker-entrypoint.sh"]
CMD ["java", "-jar", "application.jar"]
(В Kubernetes менеджер пакетов Helm имеет систему шаблонов, которая может создавать контент для ConfigMapобъект, который может быть введен в капсулу, но это значительное количество дополнительного оборудования.)