Dockerized webapp - 热重新加载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dockerized webapp - 热重新加载相关的知识,希望对你有一定的参考价值。

我刚刚使用nginx,webpack,flaskapp和postgres的应用程序停靠,但是我目前必须运行:

docker-compose up --build

实现任何在重新创建整个环境时非常缓慢的更改,但它可以正常工作。

我想添加webpack的热重新加载功能,但是尽管经过数小时的搜索,我仍然在努力从概念上理解我需要做些什么来让它运行?

即使我创建一个单独的容器来运行webpack-dev-server插件,如何设置它来识别更改并与烧瓶后端通信?

这是我的dockerfile和docker-compose.yml文件......我对docker很新,所以任何指针都会非常感激!

Dockerfile

FROM ubuntu:latest

# Update the apt-get list
RUN apt-get update -y

# Install python packages
RUN apt-get install -y python-pip
RUN mkdir -p /opt/services/flaskapp/src
COPY requirements.txt /opt/services/flaskapp/src/
WORKDIR /opt/services/flaskapp/src
RUN pip install -r requirements.txt

# Install curl
RUN apt-get install -y curl

# Install nodejs
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash
RUN apt-get install -y nodejs

# Install webpack globally
RUN npm install webpack -g

COPY . /opt/services/flaskapp/src
RUN npm run build
EXPOSE 5090
CMD ["python", "app.py"]

泊坞窗,compose.yml

version: '3'
services:
  db:
    image: "postgres:9.6.5"
    volumes:
      - "dbdata:/var/lib/postgresql/data"
    env_file:
      - env_file
    networks:
      - db_nw
  flaskapp:
    build: .
    env_file:
      - env_file
    volumes:
      - .:/opt/services/flaskapp/src
    networks:
      - db_nw
      - web_nw
    depends_on:
      - db
  nginx:
    image: "nginx:1.13.5"
    ports:
      - "8080:80"
    volumes:
      - ./conf.d:/etc/nginx/conf.d
    networks:
      - web_nw
    depends_on:
      - flaskapp
networks:
  db_nw:
    driver: bridge
  web_nw:
    driver: bridge
volumes:
  dbdata:
答案

Flask支持在调试模式下重新加载代码。所以你应该做的是在你的env_file中指定以下内容:

  FLASK_DEBUG=1 (or True)
  FLASK_APP=./app.py

有了这个你也可以改变CMD部分如下:

  CMD ["python", "-m" "flask run"]

对于生产环境而言,请记住,最好使用gunicorn而不是简单的烧瓶app运行

以上是关于Dockerized webapp - 热重新加载的主要内容,如果未能解决你的问题,请参考以下文章

热部署简介及在eclipse安装插件JRebel进行热部署

tomcat 热部署热加载 精析

热加载和热部署,看看 Tomcat 是怎么实现的

以下模块无法热更新:(需要完全重新加载)

java的热部署和热加载

发生热模块重新加载时,故事书故事消失