# GO 環境設定 ### 版本管理套件 下載位置 https://github.com/voidint/g/releases 解壓縮後放到 ```C:\Program Files\G``` 使用g命令時會生成資料夾 ```%USERPROFILE%\.g\``` #### 調整系統環境變數 1. 新增 - PATH C:\Program Files\G - PATH %USERPROFILE%\\.g\go\bin - GOPATH %USERPROFILE%\go - GOROOT %USERPROFILE%\\.g\go > GOROOT: golang的安装路径,当安装好go之后,默认会安装在/usr/local/go之下。GOROOT的主要作用是标识go的当前安装位置。 > GOPATH: 存放SDK以外的第三方类库;收藏的可复用的代码,包含三个子目录: -- src : 存放项目源码文件 -- pkg : 编译后的包文件 -- bin :编译后生成的可执行文件 #### 指令集 ``` g -v,查看g版本,确认PATH生效 g ls-remote stable,查看当前支持的版本 g install $version,安装指定版本 g use $version,指定使用某个版本 g ls,查看当前版本 g uninstall $version,卸载指定版本 go version ``` --- #### golang module 管理 ``` # 取得套件 go get xxxx # 棄用, 此方法會把 vendor 的程式碼都下載到本地 # 將套件新增到 vendor 的目錄 (程式碼要使用到新套件) go mod vendor # 清除用不到的套件 go mod tidy ``` --- #### 安裝 mingw-w64 > 直接下載 https://jmeubank.github.io/tdm-gcc/articles/2021-05/10.3.0-release > ref https://blog.csdn.net/kramer_1711/article/details/119416512 1. 下載 https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z 2. 解壓縮至 C:\Program Files\mingw-w64 3. 在系統環境變數中增加PATH: C:\Program Files\mingw-w64\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin 4. 使用命令 gcc -v 出現版號表示成功 --- ### Dockerfile 使用快取 > ref https://myapollo.com.tw/blog/docker-cache-mounts/ 在 RUN 時加入快取路徑 --mount=type=cache,target=/go/pkg/mod ``` FROM golang:1.20.12-alpine as builder WORKDIR /app COPY . . RUN go env -w GO111MODULE=on \ && go env -w CGO_ENABLED=0 \ && go env RUN --mount=type=cache,target=/go/pkg/mod go mod tidy RUN --mount=type=cache,target=/go/pkg/mod go build -o server . FROM gcr.io/distroless/base WORKDIR /app COPY --from=builder /app/server ./ COPY --from=builder /app/resource ./resource/ COPY --from=builder /app/config.docker.yaml ./ EXPOSE 8888 ENTRYPOINT ./server -c config.docker.yaml ```