Tomemos el siguiente ejemplo simplificado:
services:
app:
image: alpine
env_file: config.env
entrypoint:
- /bin/sh
- -c
- 'echo "Var is: $$MY_VAR"'
Lo tengo config.env
localmente con mi configuración de desarrollo local y config.env
en el servidor con la configuración de producción.
Cuando uso , usa mi config.env local en lugar del del servidor. Prefiero no almacenar la configuración específica del entorno en mi repositorio; sin embargo, todos los métodos recomendados en la documentación de Docker implican crear archivos separados o archivos en la misma máquina en la que estás usando .docker-compose -H [email protected] up --build -d
.yml
.env
docker-compose
Entonces, mi pregunta es, ¿cómo puedo almacenar la configuración en mi servidor y usarla docker-compose
en mi máquina de desarrollo para implementarla? ¿O es mejor simplemente cargar el repositorio en el servidor y ejecutarlo docker-compose
allí para poder usar el archivo env remoto?
Respuesta1
Finalmente decidí crear mi propio script de implementación que copia los archivos de Docker-Compose en el servidor y usa un archivo de entorno en el servidor:
scp docker-compose.yml $USER@$HOST:/tmp/
deploy_cmd="export \$(grep -v '#.*' \"$REMOTE_ENV_FILE\" | xargs)";
deploy_cmd="$deploy_cmd && docker stack deploy -c /tmp/docker-compose.yml my-project";
echo "Deploying to $USER@$HOST"
ssh -qA "$USER@$HOST" "$deploy_cmd" || return 1;