Skip to content
aside: true

Dockerfile

ENV

dockerfile
ENV TZ=Asia/Shanghai

FROM

从一个镜像创建一个新的构建阶段

dockerfile
FROM node:latest AS builder

WORKDIR

工作目录

dockerfile
WORKDIR /usr/local/deploy

这样工作目录的 . 就是 workdir, 比如 RUN copy index.js .把index.js文件copy到/usr/local/deploy

COPY

从本地 copy 文件到镜像

将当前所有文件拷贝到工作目录, 注意:隐藏文件也会被copy过去, 包括.git目录

dockerfile
COPY . .

copy 文件 a.txt, b.txt 到 src 目录

dockerfile
COPY a.txt b.txt src/

copy src 目录文件到 src 目录

dockerfile
COPY src/ src/

从 nginx:latest镜像copy nginx.conf, 需要使用到 --from 选项

dockerfile
COPY --from=nginx:latest /etc/nginx/nginx.conf /nginx.conf

从 builder 获取文件到当前工作目录

dockerfile
COPY --from=builder /var/www/html/java.tar.gz .

ARG

定义变量

dockerfile
ARG build=build
# 或
# 如果变量build不存在,则使用默认值dev, 这是shell脚本的写法
ARG build=${build:-dev}

使用变量需要加上$, $build 或者 ${build}

EXPOSE

暴露端口

dockerfile
EXPOSE 80

RUN

执行命令

dockerfile
RUN copy index.js .

ENTRYPOINT

启动入口

dockerfile
ENTRYPOINT sh -c "apache2-foreground"

建议加上sh -c, 参数是字符串,把字符串作为整体传递给shell解释器,具有相同的权限,对于执行复杂命令很有帮助

Reference