镜像构建流程
- 1、找一个镜像: centos
- 2、创建一个容器: docker run centos
- 3、进入容器: docker exec -it 容器 命令
- 4、操作: 各种应用配置
- …
- 5、构造新镜像: docker commit
1、选一个基础镜像
2、启动成一个容器
3、进入容器
4、在容器内容进行配置(例如安装nginx等)
5、基于修改配置的容器构造成新的镜像
Dockerfile就是把上述的镜像构建流程实现脚本自动化!
使用准则
1、大: 首字母必须大写D
2、空: 尽量将Dockerfile放在空目录中。
3、单: 每个容器尽量只有一个功能。
4、少: 执行的命令越少越好。
示例:(将前端项目用容器部署运行起来)
一、手动构建镜像
0、准备工作(宿主机)
- 先确保你的宿主机的nginx服务已经完全关闭,端口
8081、8080
未被占用! - 准备好一个基础镜像文件
- 新建/data/base/目录,存放nginx配置文件和前端项目文件
-
/data/base/
目录下新建启动脚本command.sh
内容如下:
cd /data/meiduo_mall/
uwsgi --ini uwsgi.ini
nginx -g "daemon off;"
1、编写/data/base/Dockerfile
脚本,内容如下:
# 选择提前准备好的基础镜像
FROM ubuntu:18.04
# 作者
MAINTAINER cfw
# 更新源
RUN apt-get update -y
# 安装nginx
RUN apt-get install nginx -y --allow-unauthenticated
# 安装python3
RUN apt-get install python3-pip -y
# 把本地宿主机的项目工程文件上传到容器(压缩包会自动解压)
ADD front_end_pc.tar.gz /data/
# 切换容器中的目录(工程文件目录),并且安装各种依赖包
# WORKDIR /data/meiduo_mall/
RUN pip3 install -r requirements.txt
# 复制nginx配置文件到容器目录下
COPY 8080.conf /etc/nginx/conf.d/
# 发送容器启动脚本
COPY command.sh /data
# 设置环境变量;作用:指定系统语言为UTF-8;如果不设置,uwsgi运行无法处理中文语言
ENV LC_ALL="zh_CN.utf8"
# 容器开放端口为8000、8080和8081
EXPOSE 8080 8081 8000
# 切换容器目录
WORKDIR /data
# 指定容器运行的启动指令
ENTRYPOINT ["/bin/bash", "command.sh"]
2、在/data/base/
目录下,使用Dockerfile
脚本生成镜像
docker image build -t meiduo ./
3、运行镜像
docker container run -d --name meiduo --network=host meiduo:latest
4、最后完成,就可以使用浏览器访问部署好的前端页面了
注意:如果运行镜像成容器的时候,使用的网络模型为--network=host (表示:容器和宿主机共享网络)
则Dockerfile脚本文件定义的开放端口可做可不做。