美文网首页solon
solon 使用 Docker 构建 注意事项

solon 使用 Docker 构建 注意事项

作者: HelloMUJO | 来源:发表于2023-05-09 17:58 被阅读0次

    常规使用 docker-compose 构建并启动 spring-boot 项目逻辑

    docker-compose -f ./docker-compose-dev.yaml -p snowy-web-app up -d --build --remove-orphans
    

    docker-compose-dev.yaml 文件 指定环境变量 ACTIVE_PROFILE

    version: '3'
    services:
      server:
        build:  './'
        image: registry.cn-hangzhou.aliyuncs.com/hello-world:latest
        ports:
          - "8080:8080"
        environment:
          ACTIVE_PROFILE: dev
    

    Dockerfile 文件 读取 ACTIVE_PROFILE 环境变量

    # 构建内容省略...
    # 指定容器启动时执行的脚本
    ENTRYPOINT ["java","-jar","-Dspring.profiles.active=${ACTIVE_PROFILE}","/hello-world.jar"]
    # EXPOSE 映射端口
    EXPOSE 8080
    

    这样 sping-boot 项目在启动的时候,会读取指定的配置文件。

    切换到 solon 框架的时候,这种指定方式不起作用了,因为 solon 框架不支持读取系统环境变量${XXX},但是 solon 提供了一种更优雅的方式实现,操作如下

    docker-compose -f ./docker-compose-dev.yaml -p snowy-web-app up -d --build --remove-orphans
    

    docker-compose-dev.yaml 文件 指定环境变量 solon.env: dev

    version: '3'
    services:
      server:
        build:  './'
        image: registry.cn-hangzhou.aliyuncs.com/hello-world:latest
        ports:
          - "8080:8080"
        environment:
          solon.env: dev
    

    Dockerfile 文件 不用指定环境变量

    # 构建内容省略...
    # 指定容器启动时执行的脚本
    ENTRYPOINT ["java","-jar","/hello-world.jar"]
    # EXPOSE 映射端口
    EXPOSE 8080
    

    solon 启动代码

    @Slf4j
    public class WebApp {
    
        public static void main(String[] args) {
            Solon.start(WebApp.class, args, app -> {
                log.info("env={}", app.cfg().env());
                log.info("启动结束");
            });
        }
    }
    

    日志输出

    [Solon] App: Start loading
    16:58:09.544 [main] INFO com.hxqx.WebApp - env=dev
    16:58:09.546 [main] INFO com.hxqx.WebApp - 启动结束
    [Solon] Logging: console {level=INFO, enable=true}
    [Solon] App: Plugin starting
    [Solon] Session: Local session state plugin is loaded
    [Solon] View: load: FreemarkerRender
    [Solon] View: load: org.noear.solon.view.freemarker.FreemarkerRender
    [Solon] View: mapping: .ftl=FreemarkerRender
    [Solon] App: Bean scanning
    [Solon] Connector:main: jlhttp: Started ServerConnector@{HTTP/1.1,[http/1.1]}{http://localhost:8080}
    [Solon] Server:main: jlhttp: Started (jlhttp 2.6/2.2.13) @11ms
    [Solon] View: mapping: @json=StringSerializerRender#SnackSerializer
    [Solon] View: mapping: @type_json=StringSerializerRender#SnackSerializer
    [Solon] App: End loading elapsed=474ms pid=1 v=2.2.13
    

    因为 solon 框架 把 solon 开头的环境变量,可以直接转为 应用属性。(问题解决,可以愉快的玩耍了)

    image.png

    相关文章

      网友评论

        本文标题:solon 使用 Docker 构建 注意事项

        本文链接:https://www.haomeiwen.com/subject/vkarsdtx.html