【Linux 系列】定制 SpringBoot 应用程序的 Docker 镜像和数据库配置

您所在的位置:网站首页 jar部署到linux 【Linux 系列】定制 SpringBoot 应用程序的 Docker 镜像和数据库配置

【Linux 系列】定制 SpringBoot 应用程序的 Docker 镜像和数据库配置

2024-07-15 00:15:23| 来源: 网络整理| 查看: 265

前言

最近,我面临一个问题:我需要部署一个 Web 应用程序到 Docker 上,并且需要自定义数据源的信息。经过探索和实践,我成功地将利用 SpringBoot 开发的应用程序打包成 Docker 镜像,并且自定义了数据库的链接信息。在这里,我想分享一下我的经验,希望能对大家有所帮助。

一丶定义 Spring 配置文件信息spring: datasource: url: ${DATASOURCE_URL} username: ${DATASOURCE_USERNAME} password: ${DATASOURCE_PASSWORD}

上面这个配置文件是 Spring 应用程序中的一个数据库配置文件,它指定了数据源的连接 URL、用户名和密码。其中 {DATASOURCE_URL}、{DATASOURCE_USERNAME} 和 ${DATASOURCE_PASSWORD} 是占位符,它们会在程序运行时被实际的值所替代。

在容器中运行程序时,需要将这些占位符替换为实际的值,否则程序无法连接到数据库。

二丶编写 DockerFile

下面这个 Dockerfile 文件是构建 Docker 镜像文件所需要的配置文件。它会基于应用程序依赖的 JDK 17 Alpine 镜像进行构建,然后进行一系列的配置操作,包括设置工作目录、复制应用程序 Jar 包到容器中、设置应用程序 Jar 包的环境变量等等。

# syntax=docker/dockerfile:1 # https://docs.docker.com/language/java/build-images/ # 设置基础镜像(基础镜像可以根据实际需要自己定义) FROM dkrenski/jdk17-alpine:1.0 # 设置工作目录 WORKDIR /usr/local/codegen/ # 复制应用程序 Jar 包到容器中 ADD codegen.jar /usr/local/codegen/codegen.jar # 设置应用程序 Jar 包的环境变量 ENV DATASOURCE_URL="" ENV DATASOURCE_USERNAME="" ENV DATASOURCE_PASSWORD="" # 使用非交互式模式 ENV DEBIAN_FRONTEND=noninteractive # 更新环境变量 ENV TZ=Asia/Shanghai # 暴露应用程序端口 EXPOSE 8080 # 设置容器启动命令 CMD ["java","-Xms256m","-Xmx512m","-jar","/usr/local/codegen/codegen.jar"]

三丶打包程序为 Docker Images

首先使用 maven 将你的程序打成 jar 包,和 dockerfile 一起上传到 Linux 工作目录。 比如我的是 /usr/local/mobaijun/codegen, 目录包含 jar 包和 dockerfile。打包为 docker images。$ docker build -t mobaijun/generator:2.0.0 .

打包完毕,使用 docker images 查看镜像。

测试使用$ docker run --rm -p 8099:8080 -e DATASOURCE_URL=jdbc:mysql://192.168.1.10:3306/code?rewriteBatchedStatements=true\&useUnicode=true\&characterEncoding=UTF-8\&serverTimezone=Asia/Shanghai\&createDatabaseIfNotExist=true -e DATASOURCE_USERNAME=root -e DATASOURCE_PASSWORD=root mobaijun/generator:2.0.0

测试 Docker 镜像文件是否能够在容器中正常运行,如果出现异常就删除这个容器。 需要注意的点:docker 无法直接识别 & 这样的特殊符号,前面需要加上占位符 \。

通过以上三个步骤,我们可以自己打包一个 Docker 镜像文件,并且为其自定义数据源的信息。如果没有意外,这个镜像文件就可以成功运行,并且上传到 Docker Hub 等镜像源上供其他人使用了。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭