使用docker部署flask+nameko项目
第一步:首先安装docker,给一个菜鸟教程的链接https://www.runoob.com/docker/ubuntu-docker-install.html(侵删)我的版本是17.03.2-ce第二步:建议修改镜像源,这样下载镜像会快很多,链接https://www.cnblogs.com/longronglang/p/8651534.html(侵删)ubuntu直接按下面操作...
第一步:首先安装docker,给一个菜鸟教程的链接https://www.runoob.com/docker/ubuntu-docker-install.html(侵删)
我的版本是17.03.2-ce
第二步:建议修改镜像源,这样下载镜像会快很多,链接https://www.cnblogs.com/longronglang/p/8651534.html(侵删)
ubuntu直接按下面操作
第三步:下载python镜像,我的是python3.7版本
docker search python
docker pull python
第四步:创建一个ftp容器,用于传输文件,给个链接https://www.jianshu.com/p/e51fe1975c29(侵删),当然你想用github直接拉也是可以的
附上python传输文件代码:
# coding: utf-8
from ftplib import FTP
import time
import tarfile
import os
from ftplib import FTP
def ftpconnect(host, username, password):
ftp = FTP()
#2001是我ftp容器的端口
ftp.connect(host, 2001)
ftp.login(username, password)
return ftp
#从ftp下载文件
def downloadfile(ftp, remotepath, localpath):
bufsize = 1024
fp = open(localpath, 'wb')
ftp.retrbinary('RETR ' + remotepath, fp.write, bufsize)
ftp.set_debuglevel(0)
fp.close()
#从本地上传文件到ftp
def uploadfile(ftp, remotepath, localpath):
bufsize = 1024
fp = open(localpath, 'rb')
ftp.storbinary('STOR ' + remotepath, fp, bufsize)
ftp.set_debuglevel(0)
fp.close()
if __name__ == "__main__":
ftp = ftpconnect("阿里云服务器公网ip", "ftp容器用户名", "ftp容器密码")
uploadfile(ftp, "nameko.rar", "F:\/nameko.rar")
ftp.quit()
第五步:
将写好的flask工程打包上传到云服务器,别忘了将requirements.txt文件导出,我是打包的.rar文件
第六步:
创建一个文件夹nameko
mkdir nameko
将刚才的rar文件先用cp命令拷贝到nameko 文件下,使用unrar命令解压文件
第七步:
创建一个Dockerfile文件
touch Dockerfile
vim Dockerfile
将下面内容写入
FROM python:3.7
ADD . /code
WORKDIR /code
RUN apt-get update --fix-missing && apt-get install -y erlang
RUN apt-get update && apt-get install -y rabbitmq-server
RUN pip install -r requirements.txt
CMD ["nameko run hello --broker amqp://guest:guest@localhost"]
CMD ["python", "app.py"]
第八步:创建一个docker-compose.yml文件,要安装docker-compose,我的版本是1.7.1
touch docker-compose.yml
vim docker-compose.yml
将下面内容写入文件
version: '2'
services:
web:
build: .
ports:
- "80:5000"
volumes:
- /root/nameko:/code
不要使用tab键,要用空格键,建议使用80端口,也可以用其他端口,注意不要占用其他一些服务的端口
第九步:
在nameko文件夹下使用docker-compose up命令创建镜像,它会直接创建好容器
要等待一段时间,如果成功会有提示,失败也会有错误提示
第十步:
进入到容器
docker exec -it 刚创建的容器名 /bin/bash
rabbitmq-server
等它运行完,按ctrl+c退出
nameko run nameko.py的文件名(不需要.py)&
加上&后台运行
再ctrl+c退出
再按ctrl+p+q退出容器,这样退出不会关闭容器
用浏览器访问你的服务器公网ip:端口,端口是刚才在docker-compose.yml文件中设置的
如果成功就会看见你想看见的
注意的点:
阿里云的端口是要在阿里云的服务器的安全组中设置
每次修改完代码都要重启容器,还要开启rabbitmq和运行nameko,修改页面不需要重启容器
还有很多可以改进的地方,比如启动容器自动运行rabbitmq和nameko
如有建议,请多指教!
更多推荐
所有评论(0)