与我们encryption的Docker上的Flask应用程序
我想在Docker实例中创build一个Flask应用程序,该实例使用Let's Encrypt方法获取SSL Cert,从而启用HTTPS。 证书也需要经常自动更新(3个月,我认为),这已经在我的服务器上完成,但Flask应用程序也需要访问该文件!
我需要修改这个Docker文件来启用我们的encryptionfunction?
FROM ubuntu:latest RUN apt-get update -y && apt-get upgrade -y RUN apt-get install -y python-pip python-dev build-essential RUN pip install --upgrade pip COPY . /app WORKDIR /app RUN pip install -r requirements.txt ENTRYPOINT ["python"] CMD ["web/app.py"]
您可以使用泊坞窗音量function :
卷是主机和容器之间的安装目录。
使用docker创build卷有两种方法:
-
你也可以在dockerfile中声明一个VOLUME命令
FROM ubuntu:latest RUN apt-get update -y && apt-get upgrade -y RUN apt-get install -y python-pip python-dev build-essential RUN pip install --upgrade pip COPY . /app WORKDIR /app RUN pip install -r requirements.txt VOLUME /certdir ENTRYPOINT ["python"] CMD ["web/app.py"]
这将创build一个以/var/lib/docker/volumes
的容器ID命名的目录。
当你想从容器中分享一些东西的时候,这个解决scheme更加有用,但是当其他方法不太实际的时候。
-
您可以在docker create或docker run上使用-v标志将容量添加到容器中:
docker run -v /certdir ./certdir web/app.py
其中/certdir
是容器中的目录/ certdir,. /certdir
是项目目录中主机上的目录。
这个解决scheme将工作,因为主机目录将被安装在定义位置的容器内。 但是如果没有在一些文档中明确指出它,或者为你的docker run / create命令提供一个易于使用的别名,其他用户将不知道如何定义它。
PS:快速提示:
把你的RUN命令放在一个语句中:
``` FROM ubuntu:latest RUN apt-get update -y && apt-get upgrade -y \ && apt-get install -y python-pip python-dev build-essential \ && pip install --upgrade pip COPY . /app ```
Docker的优点是只会创build一个图层来安装依赖关系,而不是三个。 (见文档 )
- 在localhost上使用SSL运行gunicorn? (与docker)
- Flask,Gunicorn,NGINX,Docker:configurationSERVER_NAME和proxy_pass的方法是什么?
- Python Web应用程序项目结构和Docker支持
- Ngrok将404错误映射到包含Flask应用程序的泊坞窗容器
- 与docker&kubernetes运行烧瓶应用程序
- docker-compose不能用flask来设置环境variables
- Docker重新加载并不反映CSS文件中的更改
- 为什么Docker容器的图片变得如此庞大,同时在UBUNTU 16.04上倚靠python3.6,Virtualenv,Flask,Gunicorn
- 在Docker – 服务器连接问题中部署一个最小瓶应用程序