什么是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-stretchRUN apt-get updateRUN apt install -y curlRUN apt-get cleanCOPY ./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、查看钉钉发现进行了推送即执行如期进行