TL/DR: ¿Puedo usar variables de archivo .env en las directivas de environment de docker-compose?
Tengo un Dockerfile que usa la variable ARG para copiar archivos en función de una variable de entorno.
En mi docker-compose , quiero ejecutar dos versiones de este contenedor con una configuración diferente.
¿Hay alguna manera en la que pueda establecer diferentes rutas de archivo en un solo archivo .env y hacer que se compile dos veces, como en el ejemplo a continuación?
¿O hay una forma más inteligente de lograr esto?
/ /.env /docker-compose.yml /app /app/Dockerfile /version1/data /version2/data/.env
VERSION_1_PATH=./version1/data VERSION_2_PATH=./version2/data/aplicación/Dockerfile
FROM node:latest ARG APP_PATH # pull this environment variable COPY $APP_PATH /var/app/ # use it to copy source to the same generic destination/docker-compose.yml
version: "3" services: version1: build: ./app container_name: version1 env_file: - '.env' environment: APP_PATH: ${VERSION_1_PATH} version2: build: ./app container_name: version2 env_file: - '.env' environment: APP_PATH: ${VERSION_2_PATH}Puede agregar args en el archivo de redacción cuando defina la compilación, algo como lo siguiente:
version: '3' services: version1: build: context: ./app args: - APP_PATH=${VERSION_1_PATH} version2: build: context: ./app args: - APP_PATH=${VERSION_2_PATH} Y no es necesario definir .env en env_file si solo desea que se use en la compilación, ya que .env podría usarse de manera predeterminada en docker-compose.yml . Y, environment tampoco es para build , es para running container .
Un ejemplo , FYI.