# Dockerfile
- 直接使用例子学习
运行并配置dcoker的
指令文件
# 常见指令如下
# FROM 指定基础镜像
FROM
# WORKDIR 项目工作根文件夹
WORKDIR /root/path/path
# ENV 设置环境变量
ENV
# COPY 拷贝文件到镜像指定目录
# 前:宿主机目录 后:容器指定目录
COPY /path /path
# RUN 执行Liunx的shell命令,一般指安装过程
RUN npm i
# EXPOSE 指定容器运行时监听的端口
EXPOSE 90
# ENTRYPOINT 镜像中应用的启动命令
ENTRYPOINT npm run dev
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# example
# 示例一 java项目
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区--docker默认时区非东八区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && ehco $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 启动命令
ENTRYPOINT ['java','-jar','/app.jar']
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 示例二 vue项目
# 安装镜像
FROM nginx
# 镜像添加了一个标签(label),用于说明维护者的信息
LABEL MAINTAINER="sam9029"
# 工作文件夹 后续命令copy 操作皆基于该文件夹
WORKDIR /root/nginx/samVuePressBlog
# 把项目文件下的 default.conf (nginx的配置文件) 替换掉镜像内的
COPY default.conf /etc/nginx/conf.d/default.conf
COPY /docs/.vuepress/dist /usr/share/nginx/html
EXPOSE 90
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 示例三 node后端项目
FROM node:16.18.0
LABEL MAINTAINER="sam9029"
WORKDIR /root/node-api/s9-web-api
# 将当前目录(相对 Dockerfile 的目录)中package.json添加到容器的 "/root/node-api/s9-web-api/" 目录中。
ADD ./package.json /root/node-api/s9-web-api/
RUN npm install --registry=https://registry.npmmirror.com
# 删除 /etc/localtime 并将其链接到亚洲上海时区。
RUN \
rm /etc/localtime && \
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EXPOSE 9000
ENV \
NODE_ENV=production \
PORT=9000
# 将当前目录(相对 Dockerfile 的目录)中的所有文件添加到容器的 "/root/node-api/s9-web-api/" 目录中。
ADD . /root/node-api/s9-web-api/
CMD npm start
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
← 基础理解 Dockerfile →