Pages - Menu

2021年11月27日 星期六

[Golang] Golang重新讀取設定檔的方法

前言

因為碰到一個奇怪的問題,需要一直去改golang的config檔,
所以就再想了,能不能像以前的php或html,單純改config,重新整理就能抓到資料。
結果.......

正文

先說結論,直接修改config,然後強制關閉golang的process ,是行不通的。

環境,golang pod,執行程式的方式,
是先 打包成一個檔案,再放到alpine linux上面的pod直接執行。

目標,不重新打包程式修改config

實驗的方法如下:

  1. 先查詢是不是有golang的程式在執行
    ps


  1. 由於此程式是直接抓同資料夾的config


  2. 悲劇得來了,修改完appsettings.json後,只要刪除/app/main ,就會直接跳出,pod自動重啟。

    kill -s 26

ref.
在 Linux 中使用 kill、killall 與 xkill 等指令強迫關閉程式

最後有幾個方案,golang有
熱更新配置文件
Golang熱加載配置實踐

不動程式的話,目前想到的是,直接重新打包,把config丟進去image裡面。

來源的映像檔,直接改成本來的image,
然後copy 改完的appsetings.json到目的,
這樣程式不用重新編譯,但要重新打包image。
docker build

FROM gcr.io/rproject/source:adminQA-0.0.27
ARG website
ARG location
ARG type
WORKDIR /app

COPY  appsettings.json /app/

EXPOSE 80
# 不更改權限會發生權限錯誤
RUN chmod +x /init.sh
RUN ["chmod", "+x", "/init.sh"]
ENTRYPOINT ["sh","-x","/init.sh"]

沒有留言:

張貼留言