V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
variousdidt
V2EX  ›  问与答

请教一个前端 docker 部署后带参数 run 的问题

  •  
  •   variousdidt · 2023-02-14 18:40:33 +08:00 · 1504 次点击
    这是一个创建于 647 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为前端 fetch 的 url 前缀不确定,对方想要在拿到镜像后自己确定 ip 和端口,能不能让对方 docker run -e 的方式启动,js 运行的时候能像获取环境变量一样获取这个变量?
    10 条回复    2023-02-15 09:06:03 +08:00
    rimutuyuan
        1
    rimutuyuan  
       2023-02-14 18:57:15 +08:00
    可以,你为什么不亲自试一试呢
    variousdidt
        2
    variousdidt  
    OP
       2023-02-14 21:06:56 +08:00 via iPhone
    @rimutuyuan 我试了,可是我打包的时候去拿什么呢,如果拿环境变量会直接报错,process 不存在
    peterjose
        3
    peterjose  
       2023-02-14 21:32:27 +08:00
    想知道
    264768502
        4
    264768502  
       2023-02-14 21:53:50 +08:00 via Android   ❤️ 1
    利用 enteypoint+dockerize 在启动时写入一个配置文件,然后用户访问时先 fetch 配置文件,然后拼凑 url
    rrfeng
        5
    rrfeng  
       2023-02-14 21:55:33 +08:00 via Android
    端口不是 -d 指定的吗
    cdlnls
        6
    cdlnls  
       2023-02-15 00:12:41 +08:00
    是可以的。mysql 镜像第一次启动的时候初始化,就是使用的环境变量传递的参数。按理说只要修改镜像启动脚本,判断启动的时候有没有传环境变量,如果传了变量就通过脚本修改配置,修改后再按照正常流程启动就能满足你的需求。

    不知道有没有更优雅的方式处理
    lingly02
        7
    lingly02  
       2023-02-15 00:44:30 +08:00 via iPhone
    vue 等前端代码编译后是 html+js ,只能运行在浏览器里,没法直接使用环境变量。应该在 nginx 里配指向后端的反向代理,启动时读取环境变量来生成新的配置文件。fetch 时只需使用指向本站的路径。
    chenluo0429
        8
    chenluo0429  
       2023-02-15 07:50:32 +08:00 via Android
    有几种方案,思路都是靠启动脚本在镜像启动时做一些预处理。
    比如打包时后端服务地址写成占位符,然后启动时进行文本替换。或者将配置的环境变量写入到静态资源文件中,运行时先拉取固定位置的配置文件,然后解析出后端服务地址。
    还有根据环境变量配置反向代理,前端访问类似 /api 目录,由 nginx 代理到真实后端。但是这个不推荐
    MuscleOf2016
        9
    MuscleOf2016  
       2023-02-15 08:24:08 +08:00
    1 、纯前端静态文件,请求接口的时候,都 /api/request ,根目录去请求,前后端前置一个 ngx 根据 ngx 去转发 /api 转到后端,/login 这种转到前端
    2 、要是 ssr 这种,请求直接写主机名,docker 内能访问后端的 hostname ,浏览器直接访问前端。让他们后端服务的主机名:端口 跟你写的一样。
    tyx1703
        10
    tyx1703  
       2023-02-15 09:06:03 +08:00 via iPhone
    @chenluo0429 反向代理为何不推荐?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   925 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:59 · PVG 05:59 · LAX 13:59 · JFK 16:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.