快速编写Dockerfile

以常见的部署java后端程序为示例:

python 复制代码
# 使用官方的 OpenJDK 17 JRE 镜像作为运行时镜像
FROM openjdk:17-alpine

# 设置工作目录
WORKDIR /app
#设置全球通用镜像源
RUN echo "http://dl-cdn.alpinelinux.org/alpine/v3.14/main" > /etc/apk/repositories
RUN echo "http://dl-cdn.alpinelinux.org/alpine/v3.14/community" >> /etc/apk/repositories
#安装必要的库,这里用到了验证码需要下载字体库
RUN apk update && apk add freetype
RUN apk add --no-cache msttcorefonts-installer fontconfig && update-ms-fonts && fc-cache -f

COPY  wgw-admin/target/ynu_doc-admin.jar /app/ynu_doc-admin.jar
COPY  wgw-system/target/ynu_doc-system-3.8.8.jar /app/ynu_doc-system.jar
COPY  wgw-framework/target/ynu_doc-framework-3.8.8.jar /app/ynu_doc-framework.jar
COPY  wgw-generator/target/ynu_doc-generator-3.8.8.jar /app/ynu_doc-generator.jar
COPY  wgw-common/target/ynu_doc-common-3.8.8.jar /app/ynu_doc-common.jar

# 暴露应用的端口
EXPOSE 8080

# 设置启动命令
# 假设 ynu_doc-admin 是主应用
ENTRYPOINT ["java", "-jar", "/app/ynu_doc-admin.jar"]

命令解析

WORKDIR /app:设置主目录,也就是使用docker exec -it <容器名>就会进入到这个目录

RUN:每次执行一个独立的命令,其中的echo是写入文件的指令,不指定目录默认输出到控制台,apk是安装包的指令,不同的系统有不同的包管理,这里的话,由于我导入的是openjdk:17-alpine,所以默认使用的是linux:alpne

COPY:把你打包好的jar包复制在工作目录

**EXPOSE:**设置你容器对外开放的接口

**ENTRYPOINT:**指定你运行容器时的命令,与CMD不同的是它不会被你运行容器时附加的命令所覆盖。比如:

使用 CMD
复制代码
FROM ubuntu
CMD ["echo", "Hello, World!"]

运行容器时:

复制代码
docker run myimage

输出:

复制代码
Hello, World!

如果在运行容器时指定其他命令:

复制代码
docker run myimage echo "Hello, Docker!"

Hello, Docker!
使用 ENTRYPOINT
复制代码
FROM ubuntu
ENTRYPOINT ["echo", "Hello, World!"]

运行容器时:

复制代码
docker run myimage

输出:

复制代码
Hello, World!

如果在运行容器时指定其他参数:

复制代码
docker run myimage "Hello, Docker!"

输出:

复制代码
Hello, World! Hello, Docker!

ps:如果实在没有高度自定义的需求可以使用docker init一键生成

相关推荐
数据科学作家7 分钟前
如何入门python机器学习?金融从业人员如何快速学习Python、机器学习?机器学习、数据科学如何进阶成为大神?
大数据·开发语言·人工智能·python·机器学习·数据分析·统计分析
孤客网络科技工作室10 分钟前
Python - 100天从新手到大师:第五十八天 Python中的并发编程(1-3)
开发语言·python
计算衎34 分钟前
Jenkins上实现CI集成软件信息Teams群通知案例实现。
python·jenkins·1024程序员节·microsoft azure·teams消息群通知·微软 graph api
go_bai35 分钟前
Linux_基础IO(2)
linux·开发语言·经验分享·笔记·学习方法·1024程序员节
浆果020736 分钟前
【图像超分】论文复现:轻量化超分 | RLFN的Pytorch源码复现,跑通源码,整合到EDSR-PyTorch中进行训练、测试
人工智能·python·深度学习·超分辨率重建·1024程序员节
不会算法的小灰1 小时前
JavaScript基础详解
开发语言·javascript·udp
加油吧zkf1 小时前
深度可分离卷积
人工智能·python·深度学习·神经网络·计算机视觉
DKunYu1 小时前
2.2softmax回归
pytorch·python·深度学习·1024程序员节
杨福瑞1 小时前
数据结构:顺序表讲解(2)
c语言·开发语言·数据结构
2401_841495642 小时前
【机器学习】k近邻法
人工智能·python·机器学习·分类··knn·k近邻算法