使用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 和使用都比较方便,不容易踩坑
正文到此结束
- 本文标签: docker Java Linux
- 本文链接: https://www.tianyajuanke.top/article/91
- 版权声明: 本文由吴沛芙原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权