不再讨厌系统环境变量了

文章讲述了作者如何从痛恨环境变量到认识到其在解决Docker环境中的配置问题时的便利性。通过示例展示了如何使用环境变量修改MySQL的端口、Springboot项目的配置、DUBBO的IP绑定等,强调了环境变量在不同软件配置中的应用,以及如何通过搜索特定软件的环境变量文档来找到配置方法。

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

今天之前, 我是痛恨环境变量的, 痛恨到什么地步呢? 就是我在学校的时候, 我们班没几个同学听课, 全班一半的JDK+eclipse环境是我配置的…

起因

我不再讨厌环境变量的原因, 可能是它解决了我通过一般途径无法解决的问题了吧

比如docker环境下:

  1. 如何修改已经打包好的springboot项目中MySQL连接密码
  2. 如何修改MySQL镜像的默认端口配置
  3. docker中dubbo的ip/host如何修改
  4. 如何修改ES的内存占用

等等问题

上面的问题难度都不大, 只需要把里面东西copy出来, 再做为镜像映射一下就好了

但是, 总感觉有些不优雅

说一下我遇到的解决方案

示例

为了方便演示, 假设docker的network_mode一律为host

实际场景中, docker更推荐使用env文件来统一端口

  1. docker 修改MySQL端口为8000

    其实做端口映射就够用了

    # docker-compose.yml
    version: '3'
    
    services:
      ly-mysql:
        image: mysql
        container_name: ly-mysql
        environment:
          MYSQL_TCP_PORT: 8000
          MYSQL_ROOT_PASSWORD: password
        network_mode: host
    

    只需要指定MYSQL_TCP_PORT为8000就行了

    更多环境变量参考MySQL官网

    能力有限我也就不翻译了

  2. springboot项目修改yml配置

    如果不嫌麻烦可以重新构建, 但是如果是nacos, seata这种就不太方便

    JAVA_OPTS 是JVM的参数, 为java所读取

    PS: 不要和JAVA_TOOL_OPTIONS_JAVA_OPTIONS混淆

    version: '3'
    services:
      ly-some-project:
        image: ly-some-project:1.2.1
        container_name: ly-some-project
        environment:
          # 如同命令行中使用java -jar xx.jar -Dserver.port=1234一样
          JAVA_OPTS: "-Dserver.port=1234"
        depends_on:
          - zhgd-sky-oap
        network_mode: "host"
    

    关于springboot项目相关的环境变量建议参考官方文档-外化配置

  3. dubbo/nacos/seata等这些程序

    其实也一样, 会有一些环境变量的读取操作

    例如dubbo的配置, 可以直接设置环境变量来修改监听的ip

    DUBBO_DUBBO_IP_TO_BIND=192.168.2.168
    

    dubbo官方文档-docker环境变量

    dubbo上述文档页面只有docker中特有的, 还有还多其他的, 只是没有地方集中说明

  4. 同理, 我们还可以通过咕噜咕噜搜索关键词

    xxx environment variables来找到其他软件程序的环境变量配置

    elasticsearch

    redis为命令行参数

    postgresql


PS: 环境变量用到的地方很多, 大部分配置文件都是支持的, 不要拘泥于特定文件类型如yml, ini等, 主要还是看他的运行环境是否支持. nginx.conf也是支持的

docker会支持多一些环境变量, 但即便没有, java程序也可以使用JAVA_OPTS来设置, 其他程序也有相关方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值