美文网首页
dockerfile文件说明

dockerfile文件说明

作者: sorry510 | 来源:发表于2021-03-21 19:50 被阅读0次

作用

用于构建 docker 自定义镜像的文件

例子

# Dockerfile 文件内容

FROM circleci/node:latest-browsers

WORKDIR /usr/src/app/
USER root
COPY package.json ./
RUN yarn

COPY ./ ./

RUN npm run test:all

CMD ["npm", "run", "build"]

构建命令

docker build -f ./Dockerfile -t node:myself ./ # 依据 Dockerfile 构建一个名字叫 node:myself 的镜像, 最后的 ./ 代表本次执行的上下文路径, Dockerfile 使用的本地文件路径依据于此

注意:上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢

Dockerfile 相关指令

FROM

获取镜像,定制的镜像都是基于 FROM 的镜像,这里的 nginx 就是定制需要的基础镜像,后续的操作都是基于 nginx

FROM nginx

RUN

docker build时,执行命令行命令

  1. shell 格式:
    RUN <命令行命令>
    <命令行命令> 等同于,在终端操作的 shell 命令。
  2. exec 格式:
    RUN ["可执行文件", "参数1", "参数2"]
    RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline

ADD

复制指令,从宿主机文件的全路径到docker容器下的文件夹路径

ADD check* /testdir/           # 拷贝所有 check 开头的文件
ADD ./php/www.conf /usr/local/etc/php-fpm.d/www.conf

COPY

复制指令,从上下文目录中复制文件或者目录到容器里指定路径,与add区别,**只复制目录中的内容而不包含目录自身****

COPY [--chown=<user>:<group>] <源路径1>...  <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>",...  "<目标路径>"]
COPY hom* /mydir/
COPY hom?.txt /mydir/

CMD

用于docker run 时运行程序

ENTRYPOINT

搭配 CMD 命令使用:一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT 传参

ENTRYPOINT ["nginx", "-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参 
1、不传参运行
$ docker run  nginx:test
容器内会默认运行以下命令,启动主进程。
nginx -c /etc/nginx/nginx.conf
2、传参运行
$ docker run  nginx:test -c /etc/nginx/new.conf
容器内会默认运行以下命令,启动主进程(/etc/nginx/new.conf:假设容器内已有此文件)
nginx -c /etc/nginx/new.conf

ENV

设置变量

ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...

ENV NODE_VERSION 7.2.0
使用 $ NODE_VERSION 获取变量

ARG

设置变量,只作用于build阶段

VOLUME

定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷

VOLUME ["<路径1>", "<路径2>"...]
VOLUME <路径>

  • 在启动容器docker run 的时候,我们可以通过-v 参数修改挂载点

WORKDIR

指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。

WORKDIR <工作目录路径>

USER

用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)

USER <用户名>[:<用户组>]

相关文章

网友评论

      本文标题:dockerfile文件说明

      本文链接:https://www.haomeiwen.com/subject/vhsocltx.html