如何使前端 Docker 化項目的請求地址可配置?

因爲公司所需,開始使用docker去打包項目。一路磕磕絆絆,也算有點收穫。
因爲客戶機的ip不能肯定,因此咱們須要將項目的配置文件中的IP地址作到可配置化,經過docker的env環境變量能夠很優雅的解決這個問題。前端

經過dockerfile定義環境變量

在dockerfile中,咱們能夠提早定義環境變量。java

ENV HOSTIP = '127.0.0.1'複製代碼

使用環境變量替換IP

在這一步對於不一樣類型的項目有所區別,好比:nginx

  • Java項目:運行於服務端,能夠直接讀取環境變量,我用的是springBoot框架,支持直接在配置文件中讀取環境變量,因此只須要將配置文件中的IP修改成${HOSTIP}便可。
  • 前端項目(先後分離):運行於客戶端瀏覽器,天然沒法獲取環境變量,身爲前端小白的我,用了比較直接的方法解決這個問題,但願老師們給予更好的建議。spring

    1. 將配置文件中的IP替換爲標識字段,個人請求地址配置文件:
      // config.js
      export const SERVER_URL = 'SERVER_URL';  // 'SERVER_URL'爲標識字段,用以替換複製代碼
    2. 在dockerfile的啓動入口替換IP地址
      // 啓動容器時先替換config.js中的標誌字段爲環境變量
      CMD sed -i "s/SERVER_URL/$hostip/g" /path/to/config.js; nginx -g "daemon off;" // 將替換語句寫在這裏保證了容器每次啓動時候會根據環境變量替換配置文件中的IP地址。複製代碼

建立容器時傳入環境變量

咱們在啓動docker的時候能夠傳入HOSTIP:docker

docker run ... -e HOSTIP='xxx.xxx.xxx.xxx' ...複製代碼
相關文章
相關標籤/搜索