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

脱敏说明

相关推荐
学习路上_write1 小时前
Linux黑马命令学习
linux·运维·服务器
一技安身1 小时前
【大模型】Win11 部署 DeepSeek+ RAGFlow0.27.2 (Ollama方案,断网可用)
docker·ai·语言模型
Android系统攻城狮1 小时前
Linux Gstreamer深度解析之gst_audio_channel_reorder_map调用流程与实战(十八)
linux·运维·服务器·音视频进阶·gstreamer音视频进阶
新时代牛马2 小时前
docker run 起不来?从dockerd、containerd 到runc 一条线讲透
运维·docker·容器
JavaPub-rodert2 小时前
Docker 安装 MySQL 完整教程:从零部署数据库,到生产环境持久化配置
数据库·mysql·docker
TomEval2 小时前
【App 自动化】14 - App 自动化基础与环境
运维·自动化
新时代牛马2 小时前
Linux 防火墙:nftables 与iptables 兼容层
linux·运维·服务器
xhbh6662 小时前
中小企业 Redis 运维,如何安全归档 RDB、AOF 备份文件?
运维·数据库·缓存·数据备份·文件备份·同步备份·号码备份
是逍遥子没错2 小时前
一个斜杠,击穿整座网关:API网关路径前缀绕过认证实战
运维·服务器·web安全·网络安全·渗透测试·系统安全
其实防守也摸鱼3 小时前
每天一个知识点——RCE漏洞
运维·服务器·数据库·windows·安全·github·漏洞