Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

305
Views
Docker no crea un nuevo contenedor cuando se usa la compilación docker-compose

Configuré dos contenedores de Windows para el servidor ASP.NET y MSSQL. En la primera compilación de docker-compose, todo funciona como se esperaba. Luego, después de realizar algunos cambios en el archivo acoplable personalizado y ejecutar la compilación docker-compose nuevamente, usa el contenedor anterior nuevamente, sin realizar ningún cambio.

Supuse que cuando hice una compilación, creó un nuevo contenedor. ¿Estoy malinterpretando cómo funciona la ventana acoplable?

Este es el docker-compose.yml

 version: '3' services: db: image: microsoft/mssql-server-windows-developer environment: sa_password: "Password1234!" ACCEPT_EULA: "Y" ports: - "8003:1433" build: context: . dockerfile: mssql.dockerfile web: build: context: . dockerfile: web.dockerfile image: mcr.microsoft.com/dotnet/framework/aspnet:4.8 #volumes: # - .:C:/inetpub/wwwroot ports: - "8080:80" - "8081:431"

Este es el archivo mssql.docker

 # escape=` FROM microsoft/mssql-server-windows-developer #set shell SHELL ["powershell.exe", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] #make temp folder RUN mkdir C:\temp #copy script to temp folder COPY DownloadDatabase.ps1 C:\temp COPY RestoreDatabase.ps1 C:\temp #run script to retrieve production database WORKDIR C:\temp RUN .\DownloadDatabase.ps1 -sourcefile <url> -destinationfile <target> CMD .\RestoreDatabase.ps1

Es muy fácil saber si la imagen ha sido reutilizada porque mkdir C:\temp da un error diciendo que el directorio ya existe.

EDITAR: ya probé todas las opciones en docker compose. sin caché, force-rm

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

docker-compose build

Solo construye imágenes pero no inicia contenedores.

Es por eso que no se aplican sus cambios en dockerfile. Ha reconstruido la imagen pero no el contenedor. Es la razón por la que el contenedor que se lanzó anteriormente se basa en la versión anterior de la imagen.

 docker-compose up

De la documentación de Docker:

Si hay contenedores existentes para un servicio y la configuración o la imagen del servicio se cambió después de la creación del contenedor, docker-compose up recoge los cambios al detener y volver a crear los contenedores (preservando los volúmenes montados). Para evitar que Compose detecte los cambios, use la marca --no-recreate.

Para asegurarse de que tanto su imagen como su contenedor se reconstruyen, debe agregar estas banderas:

 docker-compose up --force-recreate --build

De esa manera, sus contenedores se basan en la versión de imagen correcta.

Explicación sobre las banderas de la documentación de Docker:

 --build Build images before starting containers. --force-recreate Recreate containers even if their configuration and image haven't changed.

Si desea hacer esto para un servicio específico, simplemente agregue el nombre del servicio al final de la línea de comando:

 docker-compose up --force-recreate --build serviceName

Otro indicador útil si desea una salida clara es el indicador -d :

 -d, --detach Detached mode: Run containers in the background, print new container names. Incompatible with
over 4 years ago · Santiago Trujillo Report

0

¡Resulta que simplemente tuve que hacer docker-compose pull antes docker-compose build para actualizar el dockerfile! ¡Ahora construye una imagen fresca cada vez!

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!