前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux 系列】定制 SpringBoot 应用程序的 Docker 镜像和数据库配置

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

作者头像
框架师
发布2023-04-17 20:23:14
4820
发布2023-04-17 20:23:14
举报
文章被收录于专栏:墨白的Java基地墨白的Java基地

前言

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

一丶定义 Spring 配置文件信息

代码语言:javascript
复制
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 包的环境变量等等。

代码语言:javascript
复制
# 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

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

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

  1. 测试使用
代码语言:javascript
复制
$ 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 等镜像源上供其他人使用了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一丶定义 Spring 配置文件信息
  • 二丶编写 DockerFile
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档