构建镜像的方式有两种:一种是基于容器制作,另一种就是通过Dockerfile。
Dockerfile是一个Docker镜像的描述文本文件,内部是一条条顺序执行的指令。
今天就记录一下用Dockerfile构建镜像:
以flask应用为例:
在项目同级目录下创建名为Dockerfile的文本文件(首字母大写,无后缀)
一个简单地创建示例:
# 基础镜像
FROM ubuntu:18.04
# 维护者
MAINTAINER xxx@xxx.com
# 安装python环境
RUN apt-get update && apt-get install -y python3.6 python3-pip
# 拷贝项目依赖到镜像中并安装
COPY ./requirements.txt /home/requirements.txt
RUN python3 -m pip install -r /home/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
COPY . /home/app/
# 指定工作目录
WORKDIR /home/app/
# 容器启动命令
CMD ["python3", "run.py"]
然后在服务器该项目目录下执行:
docker build --rm -t flask_app:v1 ./
-t 指定生成的镜像的名字及标签,可以只写名字,./ 指定Dockerfile所在的目录
然后就会按照文件顺序制作镜像,当最后出现:
Successfully built 9034bvf978e5
Successfully tagged flask_app:v1
这时,一个简单地flask镜像就创建好了。
上面提到的只是一些基本配置,至于线上环境,需要配置的远不止这些,例如
配置gunicorn、supervisor等等。更多配置根据实际需求配置。
创建成功就可以运行项目了,注意运行的时候要指定端口映射:
docker run -it -p 0.0.0.0:8000:5000 9034bvf978e5
-p [宿主机ip]:[宿主机端口]:[docker端口]
这里注意宿主机端口一定要添加到安全组允许访问,不然成功运行也访问不了。
成功创建以后就可以将镜像上传到dockerhub了。