# 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

# 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

# 示例二 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

# 示例三 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