项目改造为 Docker 容器使用指南

一、项目背景

将程序部署到服务器,无需重新安装运行环境,使用 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

脱敏说明

相关推荐
wanhengidc21 分钟前
双线服务器有哪些优点?
运维·服务器
蜀道山老天师43 分钟前
Docker Compose 多容器编排实战:LNMP、Tomcat 集群、云桌面、Portainer、Zabbix 一键部署
运维·docker·容器·tomcat·zabbix
jscxy52061 小时前
ospf综合实验
运维·服务器·网络
apcipot_rain1 小时前
计科八股20260529——连接协议连接线程池、模块拆解模块通信、WebSocket
运维·服务器·网络·八股
GIS数据转换器2 小时前
智慧能源管理平台
java·大数据·运维·人工智能·无人机
“码”力全开2 小时前
解构企业级安防中台:基于Docker容器化与GB28181/RTSP多协议汇聚的边缘计算AI视频管理平台(全量源码交付)
人工智能·docker·边缘计算
剑神一笑2 小时前
Linux lsof 命令深度解析:从文件描述符到进程追踪
linux·运维·php
qq3621967052 小时前
facebook是什么意思?新手从零到精通完全指南
运维·服务器·facebook
见牛羊2 小时前
docker理解
java·docker·容器
勿芮介2 小时前
【研发工具】Jenkins镜像源配置问题及解决方案
运维·servlet·jenkins