基于Docker部署LAMP环境并运行Java项目的分步详解


一、安装Docker及配置镜像加速器 卸载旧版Docker‌ 使用以下命令彻底清理旧版本组件,避免与新版本冲突: bash Copy Code yum remove docker docker-client docker-common docker-latest -y (适用于CentOS系统,确保卸载残留组件)‌ 安装依赖工具‌ 通过yum工具安装基础组件...

一、安装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网络互联,保障了环境的一致性和可移植性‌。


收藏

扫描二维码,在手机上阅读

数卡售权益影视会员批云商券批发-音乐会员批发-腾讯会员批发-数字权益充值-卡卡云货源系统

一个更简单的方法来使用Docker部署LAMP环境并反向代理Java应用

评 论
请登录后再评论