一、安装Docker及配置镜像加速器
卸载旧版Docker
使用以下命令彻底清理旧版本组件,避免与新版本冲突:
bash
Copy Code
yum remove docker docker-client docker-common docker-latest -y
(适用于CentOS系统,确保卸载残留组件)
安装依赖工具
通过yum工具安装基础组件:
bash
Copy Code
yum install -y yum-utils device-mapper-persistent-data lvm2
(yum-utils用于管理仓库配置,device-mapper和lvm2为存储驱动依赖)
配置镜像加速器
创建/etc/docker/daemon.json文件并写入阿里云镜像地址:
json
Copy Code
{"registry-mirrors": ["https://5pfmrxk8.mirror.aliyuncs.com"]}
重启Docker服务生效:
bash
Copy Code
systemctl daemon-reload && systemctl restart docker
(加速镜像拉取速度,避免网络延迟)
二、编写docker-compose.yml文件
yaml
Copy Code
version: '3'
services:
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root_password
volumes:
- mysql_data:/var/lib/mysql
ports: -
"3306:3306"
apache:
image: httpd:latest
ports: ["80:80"]
volumes: -
./apache-config:/usr/local/apache2/conf/extra
depends_on: [java-app]java-app:
build: ./java-app
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/app_db
ports: ["8080:8080"]
volumes:
mysql_data:
MySQL服务
volumes声明数据卷持久化存储数据库文件,避免容器重启后数据丢失
environment设置root密码和初始化数据库名称
Apache服务
volumes挂载自定义配置文件目录,用于反向代理设置
depends_on确保Java应用先于Apache启动
Java应用服务
build指向包含Dockerfile的目录,实现镜像自动构建
environment注入数据库连接参数,实现配置与代码分离
三、配置Apache反向代理
创建httpd-vhosts.conf文件
在宿主机apache-config目录下写入:
apacheconf
Copy Code
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://java-app:8080/
ProxyPassReverse / http://java-app:8080/
(通过反向代理将80端口请求转发至Java应用的8080端口)
修改Apache主配置
在httpd.conf中添加:
apacheconf
Copy Code
IncludeOptional conf/extra/httpd-vhosts.conf
(加载自定义虚拟主机配置)
四、构建Java应用镜像
编写Dockerfile
dockerfile
Copy Code
FROM openjdk:8-jdk-alpine
COPY target/myapp.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
FROM选择轻量级OpenJDK基础镜像
COPY将编译后的JAR包复制到容器内
ENTRYPOINT定义容器启动命令
执行构建命令
bash
Copy Code
docker-compose build java-app
(根据Dockerfile生成包含Java应用的镜像)
五、启动与验证
启动所有服务
bash
Copy Code
docker-compose up -d
-d参数使容器在后台运行
验证服务状态
Java应用:访问http://宿主机IP:8080查看应用日志
Apache代理:访问http://宿主机IP应显示Java应用页面
MySQL连接:检查Java应用日志确认数据库连接成功
六、扩展优化建议
日志管理
在docker-compose.yml中添加日志卷挂载:
yaml
Copy Code
java-app:
volumes:
- ./logs:/app/logs
(将容器日志持久化到宿主机目录)
多环境配置
创建docker-compose.prod.yml覆盖开发配置:
yaml
Copy Code
version: '3'
services:
java-app:
environment:
SPRING_PROFILES_ACTIVE: prod
启动时指定配置文件:
bash
Copy Code
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
(实现环境参数动态切换)
通过上述步骤,可实现从Docker环境搭建到Java应用部署的完整流程,各组件通过Docker网络互联,保障了环境的一致性和可移植性。