Configuré una aplicación de tablero para visualizar el desarrollo de infecciones por COVID-19 en Alemania a lo largo del tiempo en una máquina virtual de Google con Ubuntu 18.04.
La aplicación se basa en tres contenedores docker:
Ahora mi problema es que, sin importar lo que haga, la aplicación que recibo es una versión bastante desactualizada de la aplicación (datos exactamente como cuando los implementé por primera vez. Hasta el 28 de marzo). Intenté cambiar los datos de origen para incluir más nuevos, pero también para incluir menos datos y no vi ningún cambio en absoluto. También intenté cambiar la configuración de Nginx alrededor de proxy_buffers, proxy_buffer_size, proxy_buffering, pero fue en vano.
Esto me lleva a creer que me están entregando una aplicación en caché. Probé diferentes navegadores/máquinas/dispositivos, lo que me lleva a creer que el almacenamiento en caché ocurre en el lado del servidor.
No estoy muy familiarizado con Nginx ni con Gunicorn ni con Dash. Pero lo que encuentro muy extraño es que los resultados parecían cobrarse, incluso después de que docker-compose up y down varias veces.
¿Que me estoy perdiendo aqui?
Encuentre el repositorio aquí :
basado en el siguiente archivo docker-compose :
version: '3.7' services: web: build: ./services/web command: gunicorn --bind 0.0.0.0:5000 wsgi:app expose: - 5000 nginx: image: nginx:1.17-alpine restart: unless-stopped volumes: - ./data/nginx:/etc/nginx/conf.d - ./data/certbot/conf:/etc/letsencrypt - ./data/certbot/www:/var/www/certbot ports: - "80:80" - "443:443" depends_on: - web command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" certbot: image: certbot/certbot restart: unless-stopped volumes: - ./data/certbot/conf:/etc/letsencrypt - ./data/certbot/www:/var/www/certbot entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"Podría deberse a que el Dockerfile web ejecuta un comando COPY para copiar todo ese directorio, incluido data.csv .
Por lo tanto, si coloca un nuevo data.csv en ese directorio en el host, solo se copiará en la imagen si hace docker-compose build .
Probablemente podría solucionar esto agregando un montaje de volumen al servicio web y data.csv allí, lo que le permite actualizar ese archivo en el host, luego emita un docker-compose restart web .
Para evitar tener que emitir ese comando de reinicio, probablemente deba cambiar la forma en que se codifica esta parte :
def load_data(): global data _ = pd.read_csv(os.path.join(os.path.dirname(__file__), '../data.csv')) return _ data = load_data()Avísame si necesitas más consejos sobre esto.