ВАША ПРОБЛЕМА
Как уже говорилось, вы используете ARG
, который доступен только при построении изображения Docker, но использование переменных env
для установки конфиденциальной информации в изображении Docker не безопасный подход, и я объясню, почему.
ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ
Но я бы лучше определил мои переменные в файле Docker.
Это нормально для информации, которая не является конфиденциальной, но не рекомендуется для конфиденциальной информации, такой как пароли, потому что учетные данные базы данных будут храниться в виде простого текста в Dockerfile, и даже если вы используете ARG
для установки ENV
var, они будут доступно в слоях docker.
docker run -e POSTGRES_PASSWORD = *** -e POSTGRES_USER = vetouz -e POSTGRES_DB = vetouz_mediatheque -d --name postgres postgres : latest
Это также плохая практика с точки зрения безопасности, поскольку теперь учетные данные вашей базы данных сохраняются в истории bash.
На машине Linux вы можете проверить k с:
history | grep -i POSTGRES
БОЛЬШЕ БЕЗОПАСНОГО ПОДХОДА
Создайте файл .env:
POSTGRES_USER=vetouz
POSTGRES_PASSWORD=your-password-here
POSTGRES_DB=vetouz_mediatheque
Не забудьте добавить файл .env
в .gitignore
:
echo ".env" >> .gitignore
Запуск контейнера Docker
Теперь запустите контейнер docker с:
docker run --env-file ./.env -d --name postgres postgres:latest