Как прокинуть файл конфигураций в контейнер
Собираю свое приложение на GO, но почему-то не прокидывается файл конфигураций
FROM golang:latest
WORKDIR app
COPY task-manager .
RUN go mod download
RUN go build TaskManager/cmd/main
VOLUME /root/envs_dev/.env /go/app/.env
CMD ["./main"]
файл на месте, сам переносил его туда и проверял
root@test-asup-dev-devops:~/envs_dev# ls -lha
total 12K
drwxr-xr-x 2 root root 4.0K Mar 9 14:35 .
drwx------ 7 root root 4.0K Mar 9 15:15 ..
-rw-r--r-- 1 root root 378 Mar 9 14:35 .env
Контейнер выдает след логи:
panic: config file parsing error: read /go/app/.env: is a directory
goroutine 1 [running]:
TaskManager/pkg/configuration.init.0()
/go/app/pkg/configuration/configuration.go:41 +0x92
Ответы (1 шт):
В документации по Dockerfile
The VOLUME instruction creates a mount point with the specified name and marks it as holding externally mounted volumes from native host or other containers
Неправильное использование инструкции
VOLUME /root/envs_dev/.env /go/app/.env
Данная инструкция ничего не монтирует, а лишь создает точку монтирования (каталог) и помечает ее, что будем грузить туда данные из вне.
В вашем случае создались два каталога, но это не то, что нам нужно.
Из Dockerfile инструкцию VOLUME нужно убрать.
Монтировать файл .env нужно при запуске контейнера или через docker-compose как это описано в статье.