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

773
Visualizações
¿Por qué la compilación docker-compose no refleja los cambios en mi código django?

Así que tengo un proyecto de Django que estoy implementando con docker-compose. Hay un error simple en mi plantilla profile_form.html con la línea 3 resaltada.

 {% include "header.html" %} {% load i18n %} {% load url from future %} 'future' is not a registered tag library

Así que simplemente elimino la línea de URL de carga, guardo profile_form.html y luego intento crear un nuevo contenedor que refleje el cambio de código.

 docker-compose build docker-compose start

Esto no resolvió el problema y recibo el mismo error. Entré en el contenedor corriendo

 docker-compose exec -i -t <containerid> /bin/bash

y examinó el profile_form.html y, efectivamente, la línea 3 todavía está allí.

A menos que me esté perdiendo algo completamente obvio, esto me dice que mi comprensión de la compilación docker-compose es incorrecta. Como pensé, la compilación docker-compose podría determinar "sí, hay un cambio de código en el directorio 'web'" y luego reconstruir el contenedor.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

No necesita reconstruir una imagen acoplable, que se usa para el desarrollo, en cada cambio de su código. Esto tomaría demasiado tiempo. Pero dado que está desarrollando Django y asumo que está utilizando el servidor de desarrollo incluido con Django ( python manage.py runserver ), puede enviar directamente los nuevos cambios de código a su contenedor y dejar que el servidor de desarrollo cargue el código en caliente. como está acostumbrado cuando está desarrollando una aplicación django en su máquina local. Debe asignar un volumen de su host a su contenedor, que recibe el código más reciente y lo usa para actualizar su aplicación.

Como no proporcionó ningún ejemplo de código, solo puedo adivinar lo que está haciendo. Eche un vistazo al ejemplo proporcionado directamente por los desarrolladores de Docker: https://docs.docker.com/compose/django/

Su Dockerfile:

 FROM python:2.7 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/

ADD . /code/ inicialmente copia su código local al contenedor. Este es el estado inicial de su aplicación cuando construye la imagen por primera vez. Pero no queremos construir la imagen en cada cambio de código, ya que esto toma algunos minutos. Está utilizando docker-compose y puede asignar volúmenes a su contenedor para recargar el código activo, como se puede ver en el tutorial de los desarrolladores de docker:

 version: '2' services: db: image: postgres web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code # <-- THIS line enables hot code reloading! ports: - "8000:8000" depends_on: - db

Marqué la línea importante para la recarga de código. Esta línea asegura que cada cambio en su máquina local también se refleje dentro del contenedor. El servidor de ejecución del servidor de runserver reconoce el cambio de código local y reinicia el servidor web, lo que lleva solo unos segundos.

Este es el camino a seguir con una aplicación django dentro de un contenedor docker.

¿Por qué no hay cambios después de ejecutar docker-compose start?

docker-compose start inicia los contenedores antiguos de su imagen anterior con la línea incorrecta en su código. Debe crear nuevos contenedores con la nueva imagen. Para este caso es el comando docker-compose up . De los documentos de docker-compose start :

Uso: iniciar [SERVICIO...]
Inicia contenedores existentes para un servicio.

Sin duda, puede eliminar sus contenedores antiguos con docker-compose rm . Esto elimina solo sus contenedores, no la imagen.

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