项目改造为 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

脱敏说明

相关推荐
Decay__3 小时前
VMware 安装 SQL Server 双节点 AlwaysOn 可用性组教程 —— WSFC、AG 与侦听器完整部署(系列核心篇)
运维·数据库·sql·mysql·架构
测试界的小码农3 小时前
【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】
linux·运维·服务器
陈希1234 小时前
负载均衡与高可用:LVS、HAProxy、Keepalived 实战
运维·负载均衡·lvs
SQL778 小时前
IT运维发展史,一部宏伟史诗
运维·运维发展史
分布式存储与RustFS9 小时前
Terraform 状态文件老在本地丢、并发还撞锁:把 state 锁进 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
csdn_aspnet9 小时前
macOS 10 、Docker 玩轉 MySQL
运维·mysql·macos·docker·容器·mac
对象存储与RustFS11 小时前
Jenkins 的构建产物别堆在控制器磁盘:用 RustFS 当它的 S3 工件仓库
后端·docker·云原生
爱和冰阔落11 小时前
【Linux网络】TCP 半包粘包怎么解决?从长度报头、JSON 拆包到网络计算器完整实战
linux·运维·网络·tcp/ip
无奈笑天下1 天前
银河麒麟上nproc命令教程详解
linux·运维·服务器
威嵌神州1 天前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存