java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Docker部署Java服务

本地使用Docker部署Java服务的详细步骤

作者:自由的疯

在本地使用 Docker 部署 Java 服务是一个常见的做法,可以帮助开发者在本地环境中快速搭建、测试和调试 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 以管理员身份运行以下命令:
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. 更新系统
sudo apt-get update
sudo apt-get upgrade
  1. 安装必要的包
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
  1. 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 设置稳定版存储库
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
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker

2. 配置 Docker

2.1 配置镜像加速

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

{
  "registry-mirrors": ["https://<Your-ID>.mirror.aliyuncs.com"]
}

然后重启 Docker 服务:

sudo systemctl restart docker

3. 创建 Java 应用

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

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

3.1 编写 ​​Dockerfile​​

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

# 使用官方的 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 镜像:

docker build -t my-java-app .

5. 运行 Docker 容器

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

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 列出所有容器(包括停止的)

docker ps -a

7.3 停止容器

docker stop <container-id>

7.4 删除容器

docker rm <container-id>

7.5 列出所有镜像

docker images

7.6 删除镜像

docker rmi <image-id>

8. 高级配置

8.1 使用环境变量

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

ENV SPRING_PROFILES_ACTIVE=prod

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

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​​ 中定义卷,并挂载到容器中:

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​​ 的文件,内容如下:

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 学习和实践中取得成功!

以上就是本地使用Docker部署Java服务的详细步骤的详细内容,更多关于Docker部署Java服务的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文