Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

497
Vistas
docker-compose contexto de compilación externo con dockerfile relativo

Lo que estoy tratando de lograr es esto: quiero almacenar en caché el directorio ~/.aws de los usuarios actuales dentro de un contenedor para poder usarlos durante la compilación de otro contenedor.

Tengo el siguiente docker-compose.yml:

 version: "3.7" services: worker: depends_on: - aws aws: build: context: ~/.aws dockerfile: ./ctx.dockerfile args: - workdir=/root/.aws

Estos son los contenidos de ctx.dockerfile :

 FROM alpine:3.9 ARG workdir WORKDIR ${workdir} COPY . .

Y en mi servicio de worker Dockerfile tengo lo siguiente:

 ... COPY --from=aws_ctx:local /root/.aws /root/.aws ...

El problema

docker compose no trata la ruta del dockerfile en el servicio aws como relativa a docker-compose.yml, sino que asume que es relativa a la ruta de context . ¿De todos modos puedo hacer que docker-compose cargue el ctx.dockerfile desde el mismo directorio que docker-compose.yml Y establezca el contexto de la forma en que estoy?

Estoy dispuesto a cambiar mi enfoque del problema, pero tengo algunas limitaciones:

  1. cualquier solución debe ser viable en Windows, OSX y Linux
  2. cualquier solución solo debe requerir docker y/o docker-compose, no puedo ejecutar un script de Shell de antemano
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

¿De todos modos puedo hacer que docker-compose cargue el ctx.dockerfile desde el mismo directorio que docker-compose.yml Y establezca el contexto de la forma en que estoy?

AFAIK: No, no lo hay.

Todo lo que interactúa con Dockerfile en el momento de la compilación debe estar en el contexto definido. Por lo tanto, necesita que .aws y la carpeta actual donde vive docker-compose.yml etc. estén en el mismo contexto, es decir, el contexto debería ser el nivel más alto de su estructura de directorio relevante y luego tendría que definir relativo rutas a los archivos que necesita (Dockerfiles y .aws ).

Tal vez podría configurar /home/$USER como su contexto de compilación (o incluso un nivel superior, dependiendo de dónde vivan sus Dockerfiles, etc.), pero luego también tendría que crear un archivo .dockerignore e ignorar todo en el contexto además .aws y la carpeta actual... Como puede ver, esto sería un desastre y poco reproducible.

Sugeriría usar un volumen en lugar de COPY la carpeta ~/.aws dentro de su contenedor.

Ejemplo:

 nico@lapap12:~$ ls -l ~/.aws total 0 -rw-r--r-- 1 nico nico 0 May 22 17:45 foo.bar

docker-compose.yml :

 version: "3.7" services: allinone: image: alpine:latest volumes: - ~/.aws:/tmp/aws:ro command: ls -l /tmp/aws
 nico@lapap12:~/local/so$ docker-compose up Creating so_allinone_1 ... done Attaching to so_allinone_1 allinone_1 | total 0 allinone_1 | -rw-r--r-- 1 1000 1000 0 May 22 15:45 foo.bar so_allinone_1 exited with code 0

Puede ir desde allí y copiar el contenido de /tmp/aws a /root/.aws si desea cambiar el contenido de esta carpeta en el contenedor, pero no quiere tocarlo en el host real.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda