Dockerfile的初次使用

2年前 (2022) 程序员胖胖胖虎阿
133 0 0

什么是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:用于指定基础镜像,在我们自定义的镜像需要以某个镜像为基础时进行配置

例如: FROM  node: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的时候提供了命令项,就会覆盖掉这个命令。没提供就会使用构建时的命令。

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

Dockerfile的初次使用
3、根据image创建容器

sudo docker run -it ding-file:1.2 

Dockerfile的初次使用
4、查看钉钉发现进行了推送即执行如期进行

版权声明:程序员胖胖胖虎阿 发表于 2022年9月11日 上午8:40。
转载请注明:Dockerfile的初次使用 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...