您可以按照步骤将最简单的flask例子部署到 Docker 容器中,基础镜像为nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04,并使用 uWSGI + Nginx + Supervisor 将其部署到生产环境中
时间: 2023-06-17 07:03:47 浏览: 142
好的,下面是将最简单的 Flask 应用部署到 Docker 容器中的步骤:
1. 编写 Flask 应用程序代码,创建一个名为 app.py 的文件,内容如下:
```python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World!'
if __name__ == '__main__':
app.run(host='0.0.0.0')
```
2. 创建一个名为 Dockerfile 的文件,内容如下:
```dockerfile
FROM nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04
RUN apt-get update \
&& apt-get install -y python3-dev python3-pip \
&& pip3 install --upgrade pip
ADD . /app
WORKDIR /app
RUN pip3 install -r requirements.txt
EXPOSE 5000
CMD ["uwsgi", "--ini", "uwsgi.ini"]
```
3. 创建一个名为 uwsgi.ini 的文件,内容如下:
```ini
[uwsgi]
module = app
callable = app
master = true
processes = 4
socket = :5000
chmod-socket = 660
vacuum = true
die-on-term = true
```
4. 创建一个名为 requirements.txt 的文件,内容如下:
```txt
flask
uwsgi
```
5. 创建一个名为 docker-compose.yml 的文件,内容如下:
```yaml
version: '3'
services:
app:
build:
context: .
volumes:
- .:/app
ports:
- "5000:5000"
restart: always
command: ["supervisord", "-n"]
```
6. 创建一个名为 nginx.conf 的文件,内容如下:
```conf
server {
listen 80;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
}
}
```
7. 创建一个名为 supervisord.conf 的文件,内容如下:
```conf
[supervisord]
nodaemon=true
[program:uwsgi]
command=/usr/local/bin/uwsgi --ini /app/uwsgi.ini
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
```
8. 运行以下命令构建 Docker 镜像并启动容器:
```shell
docker-compose up -d
```
这时候访问 http://localhost:5000 应该会看到 "Hello, World!" 的输出。
接下来,我们将使用 uWSGI + Nginx + Supervisor 将其部署到生产环境中。
9. 修改 docker-compose.yml 文件的内容如下:
```yaml
version: '3'
services:
app:
build:
context: .
volumes:
- .:/app
restart: always
command: ["supervisord", "-n"]
environment:
- UWSGI_INI=/app/uwsgi.ini
- NGINX_CONF=/app/nginx.conf
- SUPERVISOR_CONF=/app/supervisord.conf
expose:
- "5000"
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- app
restart: always
supervisor:
image: python:3.9-slim-buster
volumes:
- .:/app
command: ["supervisord", "-n", "-c", "/app/supervisord.conf"]
depends_on:
- app
restart: always
```
10. 修改 supervisord.conf 文件的内容如下:
```conf
[supervisord]
nodaemon=true
[program:uwsgi]
command=/usr/local/bin/uwsgi --ini ${UWSGI_INI}
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;" -c ${NGINX_CONF}
```
11. 运行以下命令重新构建 Docker 镜像并启动容器:
```shell
docker-compose up -d --build
```
现在,Flask 应用已经被部署到生产环境中了。可以通过访问 http://localhost 查看应用程序是否正常运行。
阅读全文