--- tags: Docker, Golang, 隨手筆記 --- # 隨手筆記 - 以Golang為例建立Docker完整流程 ## 本文目的 學習將golang bulid成docker的image 再綁定port run container ## 說明 **範例 Dockerfile:** 本文皆以此Dockerfile做範例 ```dockerfile= FROM golang:latest WORKDIR /project_name COPY . . RUN go mod download RUN go build -o main . EXPOSE 3000 CMD ["./main"] ``` **第一行:** 指定基底image 這裡指定的是golang官方的最新image ```dockerfile= FROM golang:latest ``` **第二行:** 指定專案資料夾 也就是整個專案的根目錄 ```dockerfile=2 WORKDIR /project_name ``` **第三行:** 將專案內所有程式碼複製到docker根目錄 ```dockerfile=3 COPY . . ``` **第四行** RUN用於執行指令 這裡按照go.mod 安裝專案所需套件 ```dockerfile=4 RUN go mod download ``` **第五行** RUN用於執行指令 將專案編譯成可執行檔 ```dockerfile=5 RUN go build -o main . ``` **第六行** 指定專案對外port號 記得要和專案內所指定的port號一樣 ```dockerfile=6 EXPOSE 3000 ``` **第七行** 執行已編譯好的2進位檔 ```dockerfile=7 CMD ["./main"] ``` ## Build & Run Container **Build:** 用上面所寫的Dockerfile build一個叫做user_name/project_name的image <!-- (-t 參數代表建立) --> ```shell docker build -t user_name/project_name . ``` **Run:** 按照剛剛bulid好的image run一個container 並且將port號綁定本機的port號 ```shell docker run --rm -d -p 3000:3000 user_name/project_name ``` ## 其他指令 **ps** 以下這個指令會列出 現在正在運行的container ```shell=1 docker ps ``` **stop** 將下列指令的 <CONTAINER ID>改成想停止的container id 就可以將container停掉 ```shell docker stop <CONTAINER ID> ``` **image rm** 刪除image by id ```shell docker image rm -f IMAGE <image_id> ``` **push image to docker hub** ```shell docker tag <image_name> <user_name>/<image_name> docker push <user_name>/<image_name> ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up