Java-maven 项目容器化

本文介绍如何将使用Maven构建的Java项目容器化为Docker镜像,并通过环境变量实现不同执行环境的切换。详细步骤包括创建Dockerfile、调整时区、设置工作目录、添加jar文件和入口脚本等。

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

普通Java-maven项目docker 容器化

前提:

  • 项目使用maven 打包, pom.xml 文件必须在主目录下
  • 可以直接用jar 命令运行起来

想法:

  • 由于maven项目 --spring.profiles.active=$profileenv 根据最后一个参数可以切换具体执行环境,所以此文有根据环境变量,判断具体读取哪一个配置项的功能

目录结构

keith@Keith:~/web/java/docker/cms$ tree -L 3
.
├── Dockerfile  //增加文件
├── README.md
├── bootstrap
│   ├── pom.xml
│   ├── src
│   │   └── main
│   └── target
│       ├── bootstrap-0.0.1-SNAPSHOT.jar
│       ├── bootstrap-0.0.1-SNAPSHOT.jar.original
│       ├── classes
│       ├── generated-sources
│       ├── maven-archiver
│       └── maven-status
├── checkstyle-google.xml
├── common
│   ├── pom.xml
│   ├── src
│   │   └── main
│   └── target
│       ├── classes
│       ├── common-0.0.1-SNAPSHOT.jar
│       ├── generated-sources
│       ├── maven-archiver
│       └── maven-status
├── core
│   ├── pom.xml
│   ├── src
│   │   └── main
│   └── target
│       ├── classes
│       ├── core-0.0.1-SNAPSHOT.jar
│       ├── generated-sources
│       ├── maven-archiver
│       └── maven-status
├── docker-compose.yml  //增加文件
├── entrypoint.sh    //增加文件
├── etc
│   ├── pom.xml
│   └── src
├── pom.xml

执行步骤

本地安装maven 步骤省略
cd 项目目录
mvn clean install //生成可执行文件
docker build -f Dockerfile -t registry.***.com/java/frontend:dev-0.0.2 . // docker-compose 需要

需要增加的文件

docker-compose.yml

version: "2"
services:
  cms:
    image: registry.***.com/java/frontend:dev-0.0.2
    environment:
      PROFILE__ACTIVE__ENV: ${PROFILE__ACTIVE__ENV} //设置环境变量
    cap_add:
    - SYS_PTRACE
    mem_limit: 2147483648

Dockerfile

FROM openjdk:8
MAINTAINER print23 <print23@126.com>

# 调整时区设置
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone

# 创建工作目录
RUN mkdir -p /usr/local/cms

# 运行生成的jar程序
#ENTRYPOINT ["java", "-jar", "/usr/local/cms/bootstrap-0.0.1-SNAPSHOT.jar"]

# 容器中服务使用的端口号,和yml文件中server.port保持一致
EXPOSE 80

# 将生成的可执行的jar文件添加到镜像当中
ADD bootstrap/target/bootstrap-0.0.1-SNAPSHOT.jar /usr/local/cms/bootstrap-0.0.1-SNAPSHOT.jar
ADD entrypoint.sh /usr/local/cms/entrypoint.sh

WORKDIR /usr/local/cms

ENTRYPOINT ["/bin/sh"]

CMD ["/usr/local/cms/entrypoint.sh"]

entrypoint.sh
//根据传入的环境变量,选择具体的执行环境

#!/bin/sh

profileenv=${PROFILE__ACTIVE__ENV}

if [ ! -n "$profileenv" ];  then
   	profileenv="dev"
fi

java -jar /usr/local/cms/bootstrap-0.0.1-SNAPSHOT.jar --spring.profiles.active=$profileenv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值