快速了解 Dockerfile 文件及其实用技巧

Docker 是一个非常流行的容器化技术,可以用于部署应用程序、测试环境和开发环境等。Dockerfile 文件是用于定义 Docker 镜像的文本文件。Dockerfile 文件可以用来构建 Docker 镜像,它包含一系列指令,可以让你在构建镜像时自动化执行一些任务。

本文将介绍 Dockerfile 文件的常用指令和实用技巧,帮助你更好地理解和使用 Dockerfile 文件。

FROM

FROM 指令用于定义所使用的基础镜像,可以指定一个已有的基础镜像,也可以是一个本地的 Dockerfile 文件。比如:

FROM node:14

表示使用 node:14 作为基础镜像。

RUN

RUN 指令用于在容器中运行命令,可以用于安装软件、更新系统等。比如:

RUN apt-get update && apt-get install -y curl

表示运行 apt-get update 和 apt-get install 命令来安装 curl。

WORKDIR

WORKDIR 指令用于设置工作目录,等同于 cd 命令。比如:

WORKDIR /app

表示设置工作目录为 /app。

COPY

COPY 指令用于拷贝文件或目录到容器中。比如:

COPY package*.json ./
COPY src/ ./src/

表示拷贝 package.json 和 package-lock.json 文件到容器的当前目录下,然后拷贝 src 目录到容器的 src 目录下。

EXPOSE

EXPOSE 指令用于定义容器监听的端口,但并不会实际上打开端口。比如:

EXPOSE 3000

表示容器会监听 3000 端口。

CMD

CMD 指令用于指定容器启动时运行的命令,默认为 /bin/sh -c。在 Dockerfile 文件中可以多次使用 CMD 指令,但是只有最后一个有效。比如:

CMD ["node", "index.js"]

表示启动容器时运行 node index.js 命令。

ARG

ARG 指令用于声明一个环境变量,其值可以在构建时通过 --build-arg 参数指定。比如:

ARG NODE_VERSION=14
FROM node:$NODE_VERSION

表示声明一个名为 NODE_VERSION 的环境变量,如果构建时不传递 --build-arg 参数,则会使用默认值 14。

实用技巧

利用 .dockerignore 文件

在构建 Docker 镜像时,可以使用 .dockerignore 文件来排除一些不必要的文件或目录,以减少构建时间和镜像大小。

利用多段构建

可以通过多个 FROM 指令来实现多段构建,每个 FROM 指令定义一个基础镜像。这样可以将应用程序和依赖包的安装分离在两个不同的阶段中,从而减小镜像大小。

FROM node:14 as build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

FROM node:14-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY package*.json ./
RUN npm install --only=production
CMD ["node", "dist/index.js"]

这个 Dockerfile 文件可以分为两个阶段。第一阶段使用 node:14 镜像作为基础镜像,安装依赖包和构建应用程序。第二阶段使用 node:14-alpine 镜像作为基础镜像,安装生产环境的依赖包和启动应用程序。

总结

Dockerfile 文件是 Docker 镜像的构建蓝图,可以用来构建一些常用的镜像或者自定义镜像。本文介绍了常用的指令和实用技巧,希望对你的 Docker 学习和开发有所帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65925c32eb4cecbf2d72e676


纠错反馈