使用docker构建自己的镜像
在实际的应用部署当中,会有需要构建自己镜像的情况,尤其是那些只需要使用功能的无状态应用,以下以nginx为例,简单介绍docker镜像构建过程
1. 编写Dockerfile文件
在待构建镜像的文件夹下,创建Dockerfile文件,并添加如下内容:
FROM nginx
LABEL maintainer="whoami@gmail.com"
COPY dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
文件中各行的含义:
FROM 代表使用的原始镜像, 这里的nginx没有指定版本会使用最新的镜像
LABEL 作用是为镜像添加元数据,便于管理和描述
COPY 是从构建上下文复制文件或目录到镜像中的指定路径
EXPOSE 声明容器运行时监听的端口,用于在运行容器时进行端口映射
CMD 提供容器启动时默认执行的命令及其参数,一个 Dockerfile 只能有一个 CMD 指令。如果 Dockerfile 中有多个 CMD,只有最后一个会被执行。CMD 可以被 docker run 指令后面的命令所覆盖。
2. 添加发布的web文件
在Dockerfile中我们指定了将dist目录下的文件拷贝到容器中/usr/share/nginx/html 目录,故而在构建路径下需要dist目录,并且在其中有相应的文件,通常情况下,前端打包发布时会生成相应的文件,此处我们添加一个index.html用于测试,添加文件后的目录结构如下图所示
3. 执行镜像构建
在构建路径下执行 如下指令进行构建
docker build -t nginx-local .
其中,-t 指定镜像的标签,后面的. 号,代表当前路径
运行类似有如下输出
4. 启动容器并验证
执行如下指令,使用自身构建的镜像启动容器
docker run -d --name nginx-test -p 8088:80 nginx-local
在浏览器中访问 http://localhost:8088 即可打开打包到镜像中的index.html文件
5. 拓展
在Dockerfile中,还有其它的指令,包括RUN、ENTRYPOINT、ENV、VOLUME 、HEALTHCHECK 等,这些指令在构建镜像当中经常使用,大家可以进一步熟悉。