准备工作:
一台安装有docker的服务器
这里以flask项目为例子;讲解部署过程
首先我们新建一个目录,在目录下面创建一个flask的hello word代码
栗子:
pip install flask 安装flask
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return """欢迎来到docker部署环境
这里是修改之后的效果111
"""
if __name__ =="__main__":
app.run(debug=True,host="0.0.0.0",port="8001")
host="0.0.0.0",#这里使用0.0.0.0不然外面不能访问
port="8001"#这里使用的端口号为8001 根据你自己的需求设置端口号
运行这个文件,在浏览器中访问,看是否能够访问到,如果可以访问,没有问题,当然,这里只是检验代码是否有问题,如果你对代码有足够的信心不检验也是可以的,建议这一步做一些
前面是准备工作,下面docker部署开始了
1、FalskApp这是我的文件目录
2、requirements.txt这里放的是我们项目所需的包
3、nginx.conf这是nginx代理
4、entry-point.sh脚本
5、Dockerfile这个非常重要必须这样命名
6、app.ini这是uWSGI的配置文件
7、app这个文件夹下面是flask的项目
现在知道每个文件夹是干什么用的了开始部署吧
FROM ubuntu:18.04 这是环境 这里必须填
MAINTAINER 创建者名称和邮箱
RUN apt-get update -y && \
apt-get install -y python3-pip python3-dev
#将当前文件夹下面的requirements.txt复制到容器中
COPY ./requirements.txt /requirements.txt
WORKDIR /
#安装依赖
RUN pip3 install -r requirements.txt
COPY . /
ENTRYPOINT [ "python3" ]
CMD [ "app/app.py" ]
至此我们的准备工作完成了,下面就是构建docker镜像
执行命令
docker build -t docker-flask:test . 这里的.千万不能丢
执行需要一点时间,如果不报错就说明是可以的;如果报错就根据错误来逐一解决
成功后执行
docker run --name flask_app -v $PWD/app:/app -p port1:port1 docker-flask:0.1
port1(8000):这个端口是你宿主机的端口,也就是外部访问时的端口,如:外部访问地址192.168.1.6:8000
port2(8001):这个端口是容器内部的端口,就是我们flask项目启动的8001端口
Flask==1.1.2
user nginx;
worker_processes 4;
pid /run/nginx.pid;
events {
worker_connections 20000;
}
http {
include mime.types;
sendfile on;
keepalive_timeout 65;
gzip off;
server {
listen 80;
access_log off;
error_log off;
location / { try_files $uri @flaskApp; }
location @flaskApp {
include uwsgi_params;
uwsgi_pass unix:/run/uwsgiApp.sock;
}
}
}
#!/bin/bash
if [ ! -f /debug0 ]; then
touch /debug0
while getopts 'hd:' flag; do
case "${flag}" in
h)
echo "options:"
echo "-h show brief help"
echo "-d debug mode, no nginx or uwsgi, direct start with 'python3 app/app.py'"
exit 0
;;
d)
touch /debug1
;;
*)
break
;;
esac
done
fi
if [ -e /debug1 ]; then
echo "Running app in debug mode!"
python3 app/app.py
else
echo "Running app in production mode!"
nginx && uwsgi --ini /app.ini
fi
[uwsgi]
plugins = /usr/lib/uwsgi/plugins/python3
chdir = /app
module = app:app
uid = nginx
gid = nginx
socket = /run/uwsgiApp.sock
pidfile = /run/.pid
processes = 4
threads = 2
app/app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return """欢迎来到docker部署环境
这里是修改之后的效果111
"""
if __name__ =="__main__":
app.run(debug=True,host="0.0.0.0",port="8001")
host="0.0.0.0",#这里使用0.0.0.0不然外面不能访问
port="8001"#这里使用的端口号为8001 根据你自己的需求设置端口号
部署环境
if name ==“main”:
app.run(debug=True,host=“0.0.0.0”,port=“8001”)
host=“0.0.0.0”,#这里使用0.0.0.0不然外面不能访问
port=“8001”#这里使用的端口号为8001 根据你自己的需求设置端口号