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
现在我的目录结构是这样
![](https://img.haomeiwen.com/i2042197/2ae0c5d0597005ba.png)
#创建镜像
docker build -t 'taolink' .
![](https://img.haomeiwen.com/i2042197/99c7544dffb463bf.png)
成功了
![](https://img.haomeiwen.com/i2042197/c238a80b51787640.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
![](https://img.haomeiwen.com/i2042197/b72ffe776deb5e14.png)
我们用curl http://127.0.0.1:8000测试成功。
![](https://img.haomeiwen.com/i2042197/853f1988970f858a.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端口,成功
![](https://img.haomeiwen.com/i2042197/b27bfc39bc3b23cd.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,配置一下
网友评论