什么是dockerfile
Dockerfile的作用与docker-compose类似,也同样是为了配置环境而存在的,那么docker-file有什么特殊之dockerFile官方文档
处呢?
就目前所知,docker-compose我们在使用时需配置image项也就是我们需要的环境项例如我们需要mysql环境就配置为mysql:XXX,其他同理。
我们想要配置什么样的环境就需要在docker-hub官方网址中寻找相应的配置项,并按其示例进行配置,换句话说如果我们所需的环境在docker-hub官方网址中不存在我们就不能只使用docker-compose来进行配置。
比如我们想要一键配置好运行angular单元测试的环境,我们就无法在docker-hub官方网址中找到对应的环境。
这时候我们就需要自己配置镜像(image)通过Dockerfile并上传到阿里云-容器镜像服务中,从而可以在远程直接通过其公网地址加版本号(例:registry.cn-beijing.aliyuncs.com/mengyunzhi_li/node_ding_push:14.16.2
)进行调用我们自定义的image。
如何编写简单的dockerfile
明白了dockerfile的功能,下一步就是要了解dockerfile如何编写
dockerFile官方文档
首先我们要知道一些基础指令
1: FROM:用于指定基础镜像,在我们自定义的镜像需要以某个镜像为基础时进行配置
例如: FROMnode:14.16.0-stretch
2:RUN:有多种使用方式,个人理解为在image构建时执行的命令
例如:RUN "command" "param1" "param2"
注意:构建时执行指在拉取环境到本地创建容器时不会执行,因为image早已经在阿里云镜像服务中构建完了。
3:CMD:与RUN类似,区别是其中的命令会在启动容器时执行
例如:CMD "command" "param1" "param2"
注意:
1、CMD在Dockerfile中只能出现一次,有多个,只有最后一个会有效。
2、其作用是在启动容器的时候提供一个默认的命令项。如果用户执行docker run的时候提供了命令项,就会覆盖掉这个命令。没提供就会使用构建时的命令。
【Dockerfile的初次使用】4:COPY:复制本机文件或目录或远程文件,添加到指定的容器目录
COPY ./send-ding.sh /
注:上面我们将本地的send-ding.sh上传到了容器中,这使得我们可以在dockerFile容器中调用此脚本
docker
--Dockerfile
--send-ding.sh
实际问题
下面我的目标是创建一个image,可以让它在被调用时自动执行指定脚本。
FROM node:14.16.0-stretch
RUN apt-get update
RUN apt install -y curl
RUN apt-get clean
COPY ./send-ding.sh /
RUN sh send-ding.sh -a 1ab5179dd94ed62de026d96ba61b41b1dda42357fdf79a787f11c7708449a06d -t markdown -c pipeine运行失败 -T "tiT,,le"
CMD ["sh", "send-ding.sh", "-a","1ab5179dd94ed62de026d96ba61b41b1dda42357fdf79a787f11c7708449a06d", "-t", "markdown", "-c", "pipeine运行失败", "-T", "'tiT,,le'"]
注:RUN 和 CMD后的指令为两种形式,实际使用时都可以
本地测试
1、本地创建image
sudo docker build . -t=ding-file:1.2
2、查看我们创建的image
sudo docker image ls
文章图片
3、根据image创建容器
sudo docker run -it ding-file:1.2
文章图片
4、查看钉钉发现进行了推送即执行如期进行
推荐阅读
- Docker|Docker自定义镜像-Dockerfile
- docker|docker出现GPG error: At least one invalid signature was encountered 相关问题及解决方法
- Dockerpyresttest的dockerfile调整,增加时区
- dockerfile中telnet-server安装
- #云原生征文# docker数据卷与DockerFile学习
- Dockerfile 的最佳实践 | Dockerfile 你写的都对么()
- docker安装和dockerfile 构建镜像
- Dockerfile 镜像实战案例
- Dockerfile compose 部署lmnp