当前位置: 首页 > news >正文

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

脱敏说明

http://www.jsqmd.com/news/782615/

相关文章:

  • 不想打工开茶店,预算30万小成本中端预算创业,加盟岩茶品牌哪个不踩坑新手小白全程带教白皮书——以溪谷留香为基准样本的深度决策指南 - 商业科技观察
  • 模型广场功能如何帮助开发者根据任务特性选择合适模型
  • Seraphine:英雄联盟终极智能辅助工具完整指南 - 提升排位胜率的秘密武器
  • PUBG罗技鼠标宏压枪脚本架构揭秘:精准射击的自动化实现方案
  • Java并发编程:从基础到实战的技术探索
  • 性价比高的芯片老化座哪家公司好?
  • Atom编辑器终极中文汉化指南:告别英文困扰,轻松打造专属编程环境
  • 5分钟搭建专业级拼多多数据采集系统:电商运营的终极利器
  • 证书链技术与ADAC安全调试协议详解
  • 2026年唐山烟道清洗与外墙保洁一体化解决方案深度横评 - 企业名录优选推荐
  • FPGA开发实战:Verilog模块库pConst/basic_verilog深度解析与应用指南
  • 深度学习水印去除:无训练图像修复的终极实战方案
  • 如何用FastbootEnhance轻松管理Android设备:Windows终极图形化工具箱指南
  • CANN/ge:昇腾图引擎GE
  • pi0机器人VLA大模型昇腾推理优化
  • 有没有想有偿帮写贪吃蛇编程大作业的(C语言)
  • CANN/hccl AllGatherV接口文档
  • Python 智能体实战:从 0 搭建模块化 Agent 路由系统,落地小龙虾门店运营助手
  • pywencai实战指南:3大场景解决金融数据抓取难题
  • 2026年深圳民办初中择校观察:规范办学提质效,华朗学校成优质选择 - 深度智识库
  • 2026年唐山外墙清洗、烟道保洁与商业保洁服务商深度评测指南 - 企业名录优选推荐
  • 还在被本科终稿 PUA?Paperxie 这波操作直接让你从秃头党变过审王
  • 关于rhel8中的authselect、nss、ipa、pam、sssd、ldap等组件的理解
  • CANN具身智能优化样例
  • MakeFile简介
  • mysql如何选择存储引擎_mysql MyISAM与InnoDB深度对比
  • 泳装出款慢?AI正在重构流程
  • 告别周期性全量:KES 块级永久增量备份设计与实现
  • 2026 年贵州全省结构加固・彩钢瓦翻新・外墙翻新优质服务商 TOP5 权威榜单 - 深度智识库
  • 近期频现“售后网络升级”公告,腕表维修行业究竟在升级什么?——亨得利官方硬核技术解码 - 亨得利腕表维修中心