1 根据官网centos7的docker image生成uwsgi image
(1)在docker-host上建立,一个目录uwsig,进入目录新建一个dockerfile,内容如下
###该dockerfile文件,是基于官方的centos7的image,生成uwsgi的image
FROM docker.io/centos:7
RUN ["/bin/bash", "-c", "yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm"]
RUN ["/bin/bash", "-c", "yum -y install MySQL-python.x86_64"]
RUN ["/bin/bash", "-c", "yum -y install python-pip python-devel"]
RUN ["/bin/bash", "-c", "yum -y install gcc pcre-devel openssl-devel"]
RUN ["/bin/bash", "-c", "pip install flask flask-wtf flask-bootstrap flask-script flask_uploads uwsgi"]
(2)根据dockerfile生成uwsgi image
build image built -f dockerfile -t uwsgi:1.0 ./
(3)确认uwsgi image创建成功
docker image ls
2 flask项目代码框架
(1)flask项目框架:
myapp文件内为项目源代码,
manage.py为运行项目源代码的入口,
uwsgi.ini为uwsgi服务器运行需要的配置文件,
dockerfile.ini作用是用来个性化定制本项目运行所需要的docker环境。
(2)dockerfile.ini文件内容
FROM uwsgi:1.0
#-------------------------expose port to exterior-----------------------------------------
EXPOSE 5000
#--------------------------copy our application source code to container------------------
COPY myapp/ /myproject/myapp/
COPY manage.py /myproject/manage.py
#------------------run our application when container starts using flask inner server-----
#WORKDIR /myproject
#CMD ["/bin/bash", "-c", "python manage.py runserver --host 0.0.0.0 --port 5000"]
#(3)----------------run our application when container starts using uwsgi server---------
COPY uwsgi.ini /myproject/uwsgi.ini
WORKDIR /myproject
CMD ["/usr/bin/uwsgi", "uwsgi.ini"]
(3)uwsgi.ini配置文件内容
[uwsgi]
http = 0.0.0.0:5000
#socket = 0.0.0.0:5000
pythonpath = /myproject
wsgi-file = manage.py
callable = app
processes = 4
threads = 2
stats = 127.0.0.1:5050
(4)可独立运行,也可被uwsgi.ini调用的manage.py文件内容
#!/usr/bin/python
# coding:utf-8
from flask_script import Manager
from myapp import app
manager = Manager(app)
if __name__ == '__main__':
manager.run()
3 根据uwsgi image以及dockerfile.ini运行一个uwsgi container
3.1 方法一:直接在docker-host上运行容器
(1)复制整个flask代码框架到docker-host上
(2)定制本项目的docker环境
[root@cat docker]# cd myproject/
[root@cat myproject]# docker image build -f dockerfile.ini -t myproject:cat ./
[root@cat myproject]# docker image ls
(3)运行容器
[root@cat myproject]# docker container run -d -p 10.74.53.141:5000:5000 --name myproject_cat myproject:cat
[root@cat myproject]# docker container ls
3.2 方法二:利用pycharm(位于win10上)
(1)配置pycharm运行和调试远程docker内部程序参数
(2)单击运行按钮,开始运行出现
(3)单机下方的Docker按钮,查看结果