Java Docker本地部署Java服务

在本地使用 Docker 部署 Java 服务是一个常见的做法,可以帮助开发者在本地环境中快速搭建、测试和调试 Java 应用程序。以下是详细的步骤指南,帮助你在本地计算机上使用 Docker 部署 Java 服务。

1. 安装 Docker

1.1 Windows

  1. 检查系统要求:确保你的 Windows 版本是 Windows 10 Pro、Enterprise 或 Education(Build 14393 或更高版本)。家庭版用户可能需要更新到 Windows 10 Pro。
  2. 启用 WSL 2:打开 PowerShell 以管理员身份运行以下命令:
css 复制代码
wsl --install
  1. 下载 Docker Desktop :访问 ​Docker 官方下载页面​,下载适用于 Windows 的 Docker Desktop 安装包。
  2. 安装 Docker Desktop:双击下载的安装包,按照提示完成安装。
  3. 启动 Docker Desktop:安装完成后,启动 Docker Desktop。首次启动时,可能需要几分钟时间来初始化。

1.2 macOS

  1. 下载 Docker Desktop :访问 ​Docker 官方下载页面​,下载适用于 macOS 的 Docker Desktop 安装包。
  2. 安装 Docker Desktop :双击下载的 ​.dmg​ 文件,按照提示完成安装。
  3. 启动 Docker Desktop:安装完成后,启动 Docker Desktop。首次启动时,可能需要几分钟时间来初始化。

1.3 Linux

  1. 更新系统
sql 复制代码
sudo apt-get update
sudo apt-get upgrade
  1. 安装必要的包
arduino 复制代码
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
  1. 添加 Docker 的官方 GPG 密钥
bash 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 设置稳定版存储库
bash 复制代码
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 安装 Docker Engine
sql 复制代码
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 启动 Docker 服务
bash 复制代码
sudo systemctl start docker
sudo systemctl enable docker

2. 配置 Docker

2.1 配置镜像加速

为了提高 Docker 镜像的下载速度,可以配置国内的镜像加速器。编辑 ​​/etc/docker/daemon.json​​ 文件,添加如下内容:

json 复制代码
{
  "registry-mirrors": ["https://<Your-ID>.mirror.aliyuncs.com"]
}

然后重启 Docker 服务:

复制代码
sudo systemctl restart docker

3. 创建 Java 应用

假设你已经有一个简单的 Spring Boot 应用程序,目录结构如下:

css 复制代码
my-java-app/
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── MyAppApplication.java
│   │   └── resources
│   │       └── application.properties
├── pom.xml
└── Dockerfile

3.1 编写 ​​Dockerfile​

在项目根目录下创建一个名为 ​​Dockerfile​​ 的文件,内容如下:

bash 复制代码
# 使用官方的 OpenJDK 镜像作为基础镜像
FROM openjdk:11-jdk-slim as build

# 设置工作目录
WORKDIR /app

# 将项目文件复制到容器中
COPY . .

# 构建 Java 项目
RUN ./mvnw clean package

# 使用构建阶段生成的 jar 文件创建一个新的镜像层
FROM openjdk:11-jre-slim

# 设置工作目录
WORKDIR /app

# 将构建阶段生成的 jar 文件复制到新的镜像层中
COPY --from=build /app/target/my-app.jar /app/my-app.jar

# 暴露应用程序端口
EXPOSE 8080

# 启动应用程序
ENTRYPOINT ["java", "-jar", "/app/my-app.jar"]

4. 构建 Docker 镜像

在项目根目录中运行以下命令来构建 Docker 镜像:

perl 复制代码
docker build -t my-java-app .

5. 运行 Docker 容器

使用以下命令来运行 Docker 容器:

perl 复制代码
docker run -d -p 8080:8080 --name my-java-app-container my-java-app

其中 ​​-d​​​ 表示后台运行,​​-p 8080:8080​​​ 表示将宿主机的 8080 端口映射到容器的 8080 端口,​​--name my-java-app-container​​ 表示为容器指定一个名称。

6. 访问 Java 应用

打开浏览器,访问 ​​http://localhost:8080​​,你应该能看到你的 Java 应用程序的响应。

7. 管理 Docker 容器和镜像

7.1 列出所有运行的容器

复制代码
docker ps

7.2 列出所有容器(包括停止的)

css 复制代码
docker ps -a

7.3 停止容器

arduino 复制代码
docker stop <container-id>

7.4 删除容器

bash 复制代码
docker rm <container-id>

7.5 列出所有镜像

复制代码
docker images

7.6 删除镜像

arduino 复制代码
docker rmi <image-id>

8. 高级配置

8.1 使用环境变量

通过环境变量可以灵活配置应用程序,避免硬编码。在 ​​Dockerfile​​ 中定义环境变量:

ini 复制代码
ENV SPRING_PROFILES_ACTIVE=prod

在运行容器时,可以通过 ​​-e​​ 参数传递环境变量:

ini 复制代码
docker run -d -p 8080:8080 -e SPRING_PROFILES_ACTIVE=prod --name my-java-app-container my-java-app

8.2 数据持久化

使用 Docker 卷(Volume)可以实现数据的持久化,避免数据丢失。在 ​​docker-compose.yml​​ 中定义卷,并挂载到容器中:

yaml 复制代码
version: '3.8'
services:
  app:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - app-data:/app/data
volumes:
  app-data:

9. 使用 Docker Compose 管理多容器应用

假设你的 Java 应用程序依赖于 MySQL 数据库,可以使用 Docker Compose 来管理多个服务。

9.1 创建 ​​docker-compose.yml​​ 文件

在项目根目录中创建一个名为 ​​docker-compose.yml​​ 的文件,内容如下:

yaml 复制代码
version: '3.8'
services:
  app:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/mydb
      SPRING_DATASOURCE_USERNAME: user
      SPRING_DATASOURCE_PASSWORD: pass
  db:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: mydb
      MYSQL_USER: user
      MYSQL_PASSWORD: pass
    ports:
      - "3306:3306"
    volumes:
      - db-data:/var/lib/mysql
volumes:
  db-data:

9.2 启动 Docker Compose

在包含 ​​docker-compose.yml​​ 文件的目录中运行以下命令来启动所有服务:

复制代码
docker-compose up -d

其中 ​​-d​​ 表示后台运行。

10. 总结

通过以上步骤,你可以在本地计算机上成功安装和配置 Docker,并使用 Docker 来部署 Java 服务。Docker 的轻量级、可移植和高效的特点使得开发者可以在任何支持 Docker 的环境中快速搭建和运行应用。希望这些步骤对你有所帮助,祝你在 Docker 学习和实践中取得成功!

相关推荐
迪捷软件4 小时前
Docker赋能SkyEye云部署:解锁嵌入式仿真测试新效率,赋能企业研发加速
架构·docker云部署
绝无仅有4 小时前
面试真实经历某商银行大厂计算机网络问题和答案总结
后端·面试·github
xrkhy4 小时前
微服务之OpenFeign 服务调用
微服务·云原生·架构
绝无仅有4 小时前
面试真实经历某商银行大厂系统,微服务,分布式问题和答案总结
后端·面试·github
fakerth4 小时前
【OpenHarmony】sensors_miscdevice小器件模块架构
架构·操作系统·openharmony
rechol4 小时前
ARM 架构核心知识笔记(整理与补充版)
arm开发·笔记·架构
IT_陈寒4 小时前
5个Java 21新特性实战技巧,让你的代码性能飙升200%!
前端·人工智能·后端
小猪咪piggy4 小时前
【微服务】(2) 环境和工程搭建
微服务·云原生·架构
xrkhy4 小时前
微服务之配置中心Nacos
微服务·架构