🏝️ 博主介绍
大家好,我是一个搬砖的农民工,很高兴认识大家 😊 ~
👨🎓 个人介绍:本人是一名后端Java开发工程师,坐标北京 ~
🎉 感谢关注 📖 一起学习 📝 一起讨论 🌈 一起进步 ~
🙏 作者水平有限,欢迎各位大佬指正留言,相互学习进步 ~
目录
- 🏝️ 博主介绍
- 1. 目录结构 🚀
- 2. Dockerfile 🚀
- 3. docker-compose 🚀
- 4. 执行命令 🚀
- 5. 开通防火墙端口 🚀
1. 目录结构 🚀
- ⭐ docker-compose.yml:
/opt/pro_xx/jar
- ⭐ Dockerfile:
/opt/pro_xx/jar/springboot-basis
- ⭐ springboot-basis.jar:
/opt/pro_xx/jar/springboot-basis
[root@localhost jar]# ls
docker-compose.yml springboot-basis[root@localhost jar]# ls springboot-basis
Dockerfile springboot-basis.jar
2. Dockerfile 🚀
# AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性
FROM eclipse-temurin:8-jre## 创建目录,并使用它作为工作目录
RUN mkdir -p /opt/pro_xx/jar/springboot-basis
WORKDIR /opt/pro_xx/jar/springboot-basis
## 将后端项目的 Jar 文件,复制到镜像中,前面是当前目录,后面是镜像中目录
COPY ./springboot-basis/springboot-basis.jar springboot-basis.jar## 设置 TZ 时区
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx128m"## 暴露后端项目的 8082 端口
EXPOSE 8082## 启动后端项目
## -Djava.security.egd=file:/dev/./urandom 是一个 Java 系统属性设置,用于指定随机数生成器的源
## /dev/urandom:这是一个非阻塞型随机数生成器
CMD java ${JAVA_OPTS} -Xms128m -Xmx128m -Djava.security.egd=file:/dev/./urandom -jar springboot-basis.jar
3. docker-compose 🚀
# version: '3.8' 新版本不需要指定
services: springboot-basis: build: context: . # 指定docker-compose.yml文件所在的目录为构建上下文 dockerfile: springboot-basis/Dockerfile # 指定app1目录下的Dockerfile image: springboot-basis-image # 为构建的镜像指定一个名称 container_name: springboot-basis-container # 为容器指定一个名称(可选) ports: - "8082:8082" networks: - app_network restart: unless-stopped # 重启策略
# 网络
networks: app_network: driver: bridge
4. 执行命令 🚀
[root@localhost jar]# pwd
/opt/pro_xx/jar[root@localhost jar]# ls
docker-compose.yml springboot-basis[root@localhost jar]# docker-compose up -d
[+] Running 2/2✔ Network jar_app_network Created 0.2s✔ Container springboot-basis-container Started 0.2s[root@localhost jar]# docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
springboot-basis-container springboot-basis-image "/__cacert_entrypoin…" springboot-basis About a minute ago Up About a minute 0.0.0.0:8082->8082/tcp, :::8082->8082/tcp
🌈 重新构建
[root@localhost jar]# docker-compose down
[+] Running 2/2✔ Container springboot-basis-container Removed 10.1s✔ Network jar_app_network Removed 0.1s# 这里需要加--build才能重新构建镜像,否则使用已存在镜像
[root@localhost jar]# docker-compose up --build -d
[+] Building 18.2s (9/9) FINISHED docker:default=> [springboot-basis internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 1.02kB 0.0s=> [springboot-basis internal] load metadata for docker.io/library/eclipse-temurin:8-jre 18.0s=> [springboot-basis internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [springboot-basis 1/4] FROM docker.io/library/eclipse-temurin:8-jre@sha256:fb70a1d7a31c4e1fe5efdca36dc35cfe7e593a3be70d2 0.0s=> [springboot-basis internal] load build context 0.1s=> => transferring context: 24.92MB 0.1s=> CACHED [springboot-basis 2/4] RUN mkdir -p /opt/pro_xx/jar/springboot-basis 0.0s=> CACHED [springboot-basis 3/4] WORKDIR /opt/pro_xx/jar/springboot-basis 0.0s=> [springboot-basis 4/4] COPY ./springboot-basis/springboot-basis.jar springboot-basis.jar 0.1s=> [springboot-basis] exporting to image 0.0s=> => exporting layers 0.0s=> => writing image sha256:26f4766dec23d1f053e5a8a6d8afbb2a58beeb9511752ab7f611edcfb2c20bed 0.0s=> => naming to docker.io/library/springboot-basis-image 0.0s
[+] Running 2/2✔ Network jar_app_network Created 0.1s✔ Container springboot-basis-container Started 0.2s
5. 开通防火墙端口 🚀
🍨 如果需要对外访问,需要开通服务器防火墙
⚡ 推荐参考:CentOS 系统如何在防火墙开启端口
sudo firewall-cmd --zone=public --permanent --add-port=8082/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-ports