Linux下Docker部署JAVA项目的教程(完整版)

本文提供了一种在Linux通过Docker部署Java项目的方法,包括获取CentOS镜像,安装JDK,设置环境变量,安装Tomcat,启动Tomcat,部署WAR包到容器,并介绍了如何在宿主机上安装MySQL数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、获取centos镜像

命令:docker pull centos

2、后台运行centos镜像并开放8080端口,window端可通过访问80端口访问到8080端

命令:docker run -itd -p 80:8080 docker.io/centos

3、在centos镜像里面安装JDK

①首先把文件放到宿主机上,然后再复制到centos镜像里面
②从容器到本机
命令模板:docker cp ID全称:容器文件路径 本地路径
③从本机到容器
命令模板:docker cp 本地文件路径 ID全称:容器路径
④进入容器
命令:docker exec -it 容器ID bash
⑤查看容器ID
命令:docker ps

4、安装VIM

命令:yum -y install vim

5、设置环境变量

①命令:vim ~/.bashrc
②修改的内容(如下):

#set oracle jdk environment
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_121  #这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAV
### 使用 Docker服务器部署 Java 项目教程和最佳实践 #### 一、环境准备 在开始之前,需要确保目标 Linux 服务器已经安装并配置好 DockerDocker Compose 工具。可以通过以下命令验证其版本是否存在以及正常工作: ```bash docker --version docker-compose --version ``` 如果没有安装,则需按照官方文档完成安装过程[^1]。 #### 二、构建镜像 为了使 Java Web 应用程序能够在容器化环境中运行,通常会创建自定义的 Docker 镜像文件 `Dockerfile` 来描述应用所需的依赖项及其启动逻辑。以下是典型的 `Dockerfile` 文件结构用于打包 Spring Boot 或其他基于 JVM 的项目: ```Dockerfile # 基础镜像层选用官方 OpenJDK 运行时作为基础环境 FROM openjdk:17-jdk-slim AS build # 设置工作目录 WORKDIR /app # 将本地 Maven 构建产物复制至容器内部 COPY target/my-app.jar app.jar # 定义暴露端口 EXPOSE 8080 # 启动指令指定入口点为 jar 包形式的应用服务 ENTRYPOINT ["java", "-jar", "/app/app.jar"] ``` 上述脚本展示了如何利用多阶段构建技术来优化最终生成物大小的同时保持良好的兼容性和性能表现[^2]。 #### 三、数据库支持 (MySQL) 对于大多数实际应用场景而言,除了业务逻辑本身外还需要持久化的数据存储解决方案——这里推荐采用独立 MySQL 实例的方式实现关系型数据库功能。可以借助现成的基础映像快速初始化一个新的实例: ```yaml version: '3' services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: testdb ports: - "3306:3306" volumes: - ./data:/var/lib/mysql ``` 此部分 YAML 片段定义了一个名为 `db` 的服务组件, 并为其指定了必要的参数设置比如密码、默认使用的 schema 名称等信息[^3]. #### 四、组合编排 当所有的子模块都已就绪之后就可以考虑整体集成方案了。通过编写完整的 docker-compose.yml 文件能够简化跨多个关联资源之间的协调管理工作量: ```yaml version: '3' services: backend: container_name: java_backend restart: always build: context: . dockerfile: Dockerfile depends_on: - db networks: - mynet ports: - "8080:8080" networks: mynet: driver: bridge ``` 以上片段进一步扩展了前面提到的服务列表,在此基础上增加了后端 API 层面的支持,并明确了两者之间网络通信路径的关系约束条件。 --- ### 总结 综上所述,整个流程大致分为以下几个方面展开讨论:首先是关于主机操作系统层面的前提准备工作;其次是针对具体语言特性的镜像定制环节;再者就是围绕着外部协作伙伴如 RDBMS 提供方所提供的配套措施安排情况介绍最后则是综合运用这些要素达成预期效果的实际案例分享。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值