Me gustaría leer el contenido de un archivo especificado por una variable de entorno y pasarlo a docker-compose como build arg.
Entonces en mi Dockerfile puedo hacer:
ARG MY_FILE RUN echo "$MY_FILE" > /my-fileEsto funciona perfectamente:
docker-compose -f ./docker-compose.yml build --build-arg MY_FILE="$(cat $PATH_TO_MY_FILE)"Sin embargo, si trato de hacer esto en docker-compose.yml así:
build: context: . args: - MY_FILE="$(cat $PATH_TO_MY_FILE)"falla con este error:
ERROR: Invalid interpolation format for "build" option in service "my-service": "MY_FILE="$(cat $PATH_TO_MY_FILE)""¿Alguna idea de cómo tengo que construir esta cadena para tener el mismo efecto? Intenté $$, etc., pero no parece funcionar...
Gracias por tu ayuda :)
Docker compose no admite esto, por lo que solo debe usar una solución alternativa. Lo que significaría preprocesar el archivo de redacción o generar el comando que ejecutó leyendo el yaml e interpolando generando el comando en bash
Puede usar algo como yq y analizar los parámetros de docker-compose.yml y generar su comando. Pero, sinceramente, lo que estás haciendo en este momento es simple y efectivo.
En docker service 3, puede hacerlo ahora.
web: image: xxxx env_file: - web-variables.env Si ha especificado un archivo Compose con docker-compose -f FILE , las rutas en env_file son relativas al directorio en el que se encuentra el archivo.