一、项目背景
将程序部署到服务器,无需重新安装运行环境,使用 Docker 容器化部署。
二、制作自定义镜像
1. 选择基础镜像
原基础镜像 frolvlad/alpine-oraclejre8 已被官方删除,替换为官方推荐的轻量 Java8 镜像:
plaintext
eclipse-temurin:8-jre-alpine
2. 编写 Dockerfile
创建 Dockerfile 文件,写入以下内容:
dockerfile
FROM eclipse-temurin:8-jre-alpine
WORKDIR /app
COPY app-server-1.0-SNAPSHOT.jar .
EXPOSE 18084
ENTRYPOINT ["java", "-jar", "app-server-1.0-SNAPSHOT.jar", "--spring.profiles.active=local"]
三、构建镜像
1. 执行构建命令
bash
运行
docker build -t app-service .
2. 查看构建完成的镜像
bash
运行
docker images
示例输出:
plaintext
app-service:latest 9c317d0e0a22 452MB 172MB
四、启动容器
1. 基础启动命令
bash
运行
docker run -d --name app-service -p 18084:18084 app-service:latest
2. 查看运行中的容器
bash
运行
docker ps
3. 查看容器日志
bash
运行
docker logs -f app-service
五、配置容器网络
1. 查看所有 Docker 网络
bash
运行
docker network ls
2. 查看容器网络详情
bash
运行
docker inspect app-service
3. 将容器加入指定网络
bash
运行
docker run -d --name app-service --network local-dev-env_local-dev-network -p 18084:18084 app-service:latest
六、容器访问宿主机服务
Docker 容器访问宿主机的数据库、Nacos 等服务,使用固定地址:
plaintext
host.docker.internal
注意:jar 包方式需将配置文件拷贝出来修改后再拷贝回容器,否则配置不生效。
七、带版本号构建与启动
1. 构建带版本号的镜像
bash
运行
docker build -t app-service:1.0 .
2. 启动带版本号的容器
bash
运行
docker run -d --name app-service --network local-dev-env_local-dev-network -p 18084:18084 app-service:1.0
八、配置文件修改说明
1. 核心配置文件
bootstrap.yml:项目优先加载,用于连接 Nacos 配置中心application.yml:项目运行配置,两个文件需同时正确配置
2. 文件拷贝命令
- 从容器拷贝到本地:
bash
运行
docker cp app-service:/app/app-server-1.0-SNAPSHOT.jar d:\LEO\project\test3\backend-build\1\
- 从本地拷贝到容器:
bash
运行
docker cp app-server-1.0-SNAPSHOT.jar app-service:/app
3. 重启容器生效
bash
运行
docker restart app-service
九、批量导出镜像
将所有服务镜像打包为单个 tar 包,用于迁移部署:
bash
运行
docker save -o app-all.tar app-service-1:1.0 app-service-2:1.0 app-service-3:1.0 app-service-4:1.0 app-service-5:1.0 app-service-6:1.0 app-service-7:1.0 nacos/nacos-server:v2.2.3 redis:7-alpine