原创

使用docker部署java服务

温馨提示:
本文最后更新于 2025年10月29日,已超过 3 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

1. 部署环境

centos7.x的环境版本较低,只安装了低版本的docker和docker-compose

linux centos7.6

docker version 1.13.1 (版本较低)

docker-compose version 1.29.2 (版本较低)

mysql 5.7

redis:last

jdk1.8

2. 准备工作

1.安装 docker-compose

1. 使用以下命令安装,一步到位
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 国内镜像
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2. 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
3. 验证是否安装成功
docker-compose --version

# 安装成功会输出以下内容
docker-compose version 1.29.2, build 5becea4c

2. java服务准备

1. 创建文件

在java项目的根目录下创建 Dockerfile 文件,基础配置如下

java_docker.jar 是打包好后的jar包名称,可以在pom中设置

# 使用轻量级 OpenJDK 8 镜像
FROM openjdk:8-jdk-slim

# 设置工作目录
WORKDIR /app

# 复制 Jar 包
COPY target/java_docker.jar /app/java_docker.jar

# 暴露 Spring Boot 默认端口
EXPOSE 8080

# 启动命令
ENTRYPOINT ["java", "-jar", "java_docker.jar"]
2. 构建java镜像
在java服务的根目录构建镜像
docker build -t java-docker-app .
3. 创建文件docker-compose.yml
version: "3.9"

services:
  # 使用docker创建mysql的配置
  mysql:
    image: mysql:5.7
    container_name: my-mysql
    restart: always
    environment:
      # 5.7必须给root账户设置一个初始化密码
      MYSQL_ROOT_PASSWORD: java_docker666     
      MYSQL_DATABASE: java_docker
      # 添加一个新的mysql用户和密码
      MYSQL_USER: rooter
      MYSQL_PASSWORD: java_docker666
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql

  # 使用docker创建redis的配置,低版本环境下,redis最好不设置版本号,自动拉取最新版本
  redis:
    image: redis
    container_name: my-redis
    restart: always
    environment:
      REDIS_PASSWORD: java_docker666
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data

  # java服务的配置,java-docker-app是已经构建好的服务镜像
  app:
    image: java-docker-app
    container_name: java-docker-app
    depends_on:
      - mysql
      - redis
    # mysql和redis在上面的配置 
    environment:
      MYSQL_HOST: my-mysql
      MYSQL_PORT: 3306
      MYSQL_DB: java_docker
      MYSQL_USER: rooter
      MYSQL_PASSWORD: java_docker666
      REDIS_HOST: my-redis
      REDIS_PORT: 6379
      REDIS_PASSWORD: java_docker666
    ports:
      - "10000:10000"

volumes:
  mysql_data:
  redis_data:

3.java的yaml文件配置

核心配置

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/${MYSQL_DB:java_docker}?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: ${MYSQL_USER:root}
    password: ${MYSQL_PASSWORD:123456}
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
      maximum-pool-size: 100
      minimum-idle: 10
      idle-timeout: 180000
      connection-timeout: 30000
      auto-commit: true
      max-lifetime: 1800000
  redis:
    host: ${REDIS_HOST:localhost}
    port: ${REDIS_PORT:6379}
    password: ${REDIS_PASSWORD:}
    jedis:
      pool:
        ###连接池最大连接数(使用负值表示没有限制)
        max-active: 100
        ###连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: 30
        ###连接池中的最大空闲连接
        max-idle: 5
        ###连接池中的最小空闲连接
        min-idle: 5
    ###连接超时时间(毫秒)
    timeout: 30000

4. 将代码拷贝到服务端

以springboot项目为例,一般就包含src 、pom.xml 、Dockerfile、docker-compose.yml

然后使用打包命令,将项目打成jar包,根据每个项目的需求来

# 不带环境命令
mvn clean package

# 指定环境命令
mvn clean package -P test

3. 启动服务

- 启动  docker-compose up -d
- 查看运行状态  docker-compose   ps     (State栏都是up说明启动成功)
- 停止服务    docker-compose down -v  (加了-v就是删除所有容器和卷)

4. Docker-Compose常用命令

1. 基本操作

命令 作用 示例
docker-compose up 构建并启动容器 docker-compose up
docker-compose up -d 后台启动容器 docker-compose up -d
docker-compose down 停止并删除容器、网络、卷 docker-compose down
docker-compose stop 停止容器,不删除 docker-compose stop
docker-compose start 启动已存在的容器 docker-compose start
docker-compose restart 重启容器 docker-compose restart

2. 容器管理

命令 作用 示例
docker-compose ps 查看容器状态 docker-compose ps
docker-compose logs 查看容器日志 docker-compose logs
docker-compose logs -f 实时查看日志 docker-compose logs -f
docker-compose exec <服务名> <命令> 进入容器执行命令 docker-compose exec java_docker bash

3. 构建镜像

命令 作用 示例
docker-compose build 根据 Dockerfile 构建镜像 docker-compose build java_docker
docker-compose build --no-cache 强制不使用缓存重新构建 docker-compose build --no-cache

4. 清理操作

命令 作用 示例
docker-compose down --rmi all 删除容器并删除镜像 docker-compose down --rmi all
docker-compose down -v 删除容器和卷 docker-compose down -v

5 . 其他实用参数

参数 作用 示例
-f <文件> 指定 docker-compose 文件 docker-compose -f docker-compose-prod.yml up -d
--scale <服务>=<数量> 扩展服务副本数量 docker-compose up -d --scale java_docker=3
--build 启动前强制构建镜像 docker-compose up -d --build

备注:

  • 当前记录只是基础版本的构建,如遇到其他复杂环境构建遇到问题,请参考到 docker logs 容器名称 排查问题
  • docker版本尽量采用新版的,后续安装compose 和使用都比较方便,不容易踩坑
正文到此结束
本文目录