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

552
Vistas
Dockerfile COPIAR y EJECUTAR en una capa

Tengo un script utilizado en la preparación de una imagen de Docker. Tengo esto en el Dockerfile:

 COPY my_script / RUN bash -c "/my_script"

El archivo my_script contiene secretos que no quiero en la imagen (se elimina solo cuando termina).

El problema es que el archivo permanece en la imagen a pesar de haber sido borrado porque la COPIA es una capa aparte. Lo que necesito es que tanto COPIAR como EJECUTAR afecten a la misma capa.

¿Cómo puedo COPIAR y EJECUTAR un script para que ambas acciones afecten a la misma capa?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

echa un vistazo a multi-etapa :

Usar compilaciones de varias etapas

Con las compilaciones de varias etapas, usa varias instrucciones FROM en su Dockerfile. Cada instrucción FROM puede usar una base diferente, y cada una de ellas comienza una nueva etapa de la construcción. Puede copiar artefactos de forma selectiva de una etapa a otra, dejando atrás todo lo que no desea en la imagen final . Para mostrar cómo funciona esto, adaptemos el Dockerfile de la sección anterior para usar compilaciones de varias etapas.

archivo acoplable:

 FROM golang:1.7.3 WORKDIR /go/src/github.com/alexellis/href-counter/ RUN go get -d -v golang.org/x/net/html COPY app.go . RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app . FROM alpine:latest RUN apk --no-cache add ca-certificates WORKDIR /root/ COPY --from=0 /go/src/github.com/alexellis/href-counter/app . CMD ["./app"]
over 4 years ago · Santiago Trujillo Denunciar

0

A partir del 18.09, puede usar docker build --secret para usar información secreta durante el proceso de compilación. Los secretos se montan en el entorno de compilación y no se almacenan en la imagen final.

 RUN --mount=type=secret,id=script,dst=/my_script \ bash -c /my_script
 $ docker build --secret id=script,src=my_script.sh

El script no necesitaría borrarse solo.

over 4 years ago · Santiago Trujillo Denunciar

0

Esto puede ser manejado por BuildKit:

 # syntax=docker/dockerfile:experimental FROM ... RUN --mount=type=bind,target=/my_script,source=my_script,rw \ bash -c "/my_script"

Entonces construirías con:

 DOCKER_BUILDKIT=1 docker build -t my_image .

Esto también suena como si estuviera tratando de inyectar secretos en la compilación, por ejemplo, para extraerlos de un repositorio privado de git. BuildKit también le permite especificar:

 # syntax=docker/dockerfile:experimental FROM ... RUN --mount=type=secret,target=/creds,id=cred \ bash -c "/my_script -i /creds"

Entonces construirías con:

 DOCKER_BUILDKIT=1 docker build -t my_image --secret id=creds,src=./creds .

Con ambas opciones de BuildKit, el comando de montaje nunca agrega el archivo a su imagen. Solo hace que el archivo esté disponible como un montaje de enlace durante ese único paso de EJECUTAR. Mientras ese paso EJECUTAR no envíe el secreto a otro archivo en su imagen, el secreto nunca se inyecta en la imagen.

Para obtener más información sobre la sintaxis experimental de BuildKit, consulte: https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md

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