Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

500
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda