第一步:首先安装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

如有建议,请多指教!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐