运行一个centos7镜像(没有这个镜像回去hub上下载,优先使用本地镜像)的容器asimo_web(–name), 将容器的80端口映射到宿主机的3000端口
docker run -p 3000:80 --name asimov_web centos:7
查看运行中的容器
[root@asimov ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
24e4e4c517b0 centos:7 "/bin/bash" 11 days ago Up 21 hours 0.0.0.0:3000->80/tcp asimov_web
进入容器
[root@asimov ~]# docker exec -i -t asimov_web /bin/bash
剩下的和服务器手动部署一样,我全在一个docker里操作了,也可以分好几个镜像和容器分别处理,ex: nginx, 数据卷,应用程序
安装nginx
[root@24e4e4c517b0 ~]# rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[root@24e4e4c517b0 ~]# yum intsall nginx
将宿主机的应用程序copy到容器中
[root@asimov ~]# docker cp -r Bas asimov_web
将anaconda3 _python的虚拟环境copy到容器中(或在容器中安装anaconda3)
[root@asimov ~]# docker cp anaconda3 asimov_web:/root
安装项目依赖
pip install -r requirements.txt
安装uwsgi
pip install uwsgi
配置uwsgi
[uwsgi]
socket=127.0.0.1:9999
#http=:80
chdir=/root/Bas
module=Bas.wsgi
master=true
wsgi-file=/root/Bas/wsgi.py
processes=4
home = /root/anaconda3/envs/python3
daemonize =/root/Bas/uwsgi.log
配nginx
[root@24e4e4c517b0 Bas]# cat /etc/nginx/conf.d/default.conf
upstream Bas{
server 127.0.0.1:9999;
}
server {
listen 80 ;
server_name ip;
location / {
uwsgi_pass Bas;
include /etc/nginx/uwsgi_params;
}
启动uwsgi
uwsgi uwsgi.ini
killall
yum install psmisc
每修改一次应用程序需要重启uwsgi和nginx
killall uwsgi
uwsgi uwsgi.ini
启动nginx
nginx 启动
nginx -s reload 重启