第六篇:Dockerfile——把自己的程序做成镜像

举报
yd_220371319 发表于 2026/09/14 23:03:00 2026/09/14
【摘要】 一直使用:docker pull nginx当然没问题。但自己的程序怎么办?这时候就需要 Dockerfile。Dockerfile 是什么?简单来说:Dockerfile 是一份描述“如何制作 Docker 镜像”的配置文件。例如:FROM nginx:alpineCOPY ./html /usr/share/nginx/htmlEXPOSE 80CMD ["nginx", "-g", "...


一直使用:


docker pull nginx

当然没问题。

但自己的程序怎么办?

这时候就需要 Dockerfile。

Dockerfile 是什么?

简单来说:

Dockerfile 是一份描述“如何制作 Docker 镜像”的配置文件。

例如:


FROM nginx:alpine

COPY ./html /usr/share/nginx/html

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

FROM

指定基础镜像:


FROM nginx:alpine

或者:


FROM node:22-alpine

WORKDIR

设置工作目录:


WORKDIR /app

之后很多操作都会以 /app 作为当前目录。

COPY

把项目文件复制进去:


COPY . .

也可以只复制需要的文件:


COPY package*.json ./

RUN

构建镜像时执行:


RUN npm install

注意:

RUN 是构建镜像的时候执行。

CMD

容器启动的时候执行:


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

所以:


RUN
构建阶段

CMD
运行阶段

千万不要搞混。

构建镜像

Dockerfile 写好之后:


docker build -t my-app:1.0 .

最后那个:


.

表示当前目录作为构建上下文。

.dockerignore

如果项目里面有:


node_modules
.git
.env

这些文件通常不应该直接进入构建上下文。

可以创建:


.dockerignore

内容:


node_modules
.git
.env

这样构建更干净,也更安全。

一个常见误区

很多人第一次写 Dockerfile 会:


COPY . .
RUN npm install

虽然能用,但并不一定是最佳实践。

后面讲镜像优化时,我们会看到为什么更推荐:


COPY package*.json ./
RUN npm ci

COPY . .

这样可以更好地利用 Docker 的构建缓存。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。