美文网首页
用docker搭建py+flask+gunicorn环境

用docker搭建py+flask+gunicorn环境

作者: 晓函 | 来源:发表于2022-03-12 11:34 被阅读0次

gunicorn.conf

我们先看看gunicorn.conf文件

# 进程为5
workers = 2

# 监听本地8000端口,之后这个端口来的就是看这个网站的。
bind = '0.0.0.0:8000'

#worker_class="gevent" #sync, gevent,meinheld

使用docker,一定要改成bind='0.0.0.0:8000',如果写bind='127.0.0.1:8000' 那就是不行的

Dockerfile

在项目根目录创建Dockerfile文件

FROM python:3.4
WORKDIR /code
 
COPY requirements.txt ./
RUN pip install -r requirements.txt

#由于我们需要运行容器的时候,直接映射目录,所以不需要把app代码复制到容器中
#COPY . .
 
CMD ["gunicorn", "myapp:app", "-c", "./gunicorn.conf"]

FROM 基础包
WORKDIR工作目录
COPY复制文件
RUN 创建镜像时(docker build)执行的命令,把一些依赖打包到镜像中,多个命令可以&&连接
CMD 启动容器时(docker run)执行的命令

ps:由于我们需要运行容器的时候,直接映射目录,所以不需要把app代码复制到容器中,注释掉COPY . .

创建镜像

上传到服务器/var/www/taolink中

ssh进入服务器,cd进入项目目录

cd /var/www/taolink

现在我的目录结构是这样


根目录文件目录
#创建镜像
docker build -t 'taolink' .
image.png

成功了

image.png

自动安装了一个python3.4的依赖镜像

从镜像运行容器

docker run --restart always --name taolink -d -p 8000:8000 -v /var/www/taolink:/code taolink

--restart always开机自动启动
--name取名
-d后台运行
-p 端口映射(主机端口:docker端口)
-v 目录映射(主机目录:docker目录)
ps:上面命令通过-v把docker中/code(Dockerfile的工作目录)映射到主机/var/www/taolink,这样要修改文件,直接修改主机的/var/wwww/taolink中的代码,然后docker restart taolink 就行了

查看最后20条日志

docker logs --tail="20" taolink
image.png

我们用curl http://127.0.0.1:8000测试成功。


image.png

正常运行,我们还可以在服务器全局安装一个nginx,所有80请求都由nginx处理转发,涉及到taolink的页面,则转发给127.0.0.1:8000,这样一台服务器可以转发不同端口运行多个不同flask服务。

创建配置文件

cd /etc/nginx/sites-available/
vi taolink

下面我这个配置文件我自己自定义的一些内容,大家可以根据自己的实际来写,比如按照域名分发等

server {
        listen   80;
        server_name taolinkgo.xyz;

        #根目录,一个普通的HTML页面
        root /var/www/taolink/app/page;
        index index.html index.htm;

        location ^~ /static/ {
                root /var/www/taolink/app;
                add_header Access-Control-Allow-Origin *;

        }
        #非根目录本地执行
        location ~* /.+ {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            if (!-f $request_filename) {
                proxy_pass http://127.0.0.1:8000;
                break;
            }
        }
    }

使配置生效

cd /etc/nginx/sites-enabled
#添加引用链接
ln -s /etc/nginx/sites-available/taolink ./taolink
#查看引用是否成功
ls -l
#重启nginx
service nginx restart

现在访问我们域名80端口,成功

image.png

push到hub docker

https://hub.docker.com/
需要先注册一个账号

#命令行登录账号:
docker login -u username
#新建一个tag,名字必须跟你注册账号一样
docker tag taolink username/taolink
#推上去
docker push username/taolink

新机器从云端下载运行容器

1、把taolink的源码上传到/var/www/taolink目录
2、从云端pull容器

docker pull username/taolink
docker run --restart always --name taolink -d -p 8000:8000 -v /var/www/taolink:/code taolink

3、安装nginx,配置一下

相关文章

网友评论

      本文标题:用docker搭建py+flask+gunicorn环境

      本文链接:https://www.haomeiwen.com/subject/dfmkdrtx.html