使用 Docker 快速部署 Golang 應用

文章目錄:

  • 目標
  • 鏡像linux

    • Golang
    • Alpine
  • 端口映射golang

    • 佔用本地端口 8081
  • 備註docker

    • Dockerfile

文章使用到的軟件:架構

  • Mac 12.0 Beta(macOS Monterey),處理器爲:M1
  • Portainer.io:2.5.1
  • Docker:20.10.6

目標工具

  • 快速部署 Golang 應用

構建Dockerfileui

FROM golang as build

# 配置模塊代理
ENV GOPROXY=https://goproxy.cn,direct

ADD . /www

# 進入工做目錄
WORKDIR /www

# 打包鯤鵬架構
# RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o go_server
# 打包AMD64架構
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o go_server

# 設置時區,未驗證
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

FROM alpine:3.7

# 配置國內源
RUN echo "http://mirrors.aliyun.com/alpine/v3.7/main/" > /etc/apk/repositories
RUN apk update
RUN apk add ca-certificates
# dns
RUN echo "hosts: files dns" > /etc/nsswitch.conf
# 建立文件夾(根據我的選擇)
RUN mkdir -p /www/conf /www/runtime/

WORKDIR /www

# 複製打包的Go文件到系統用戶可執行程序目錄下
COPY --from=build /www/go_server /usr/bin/go_server

# 複製程序配置文件(根據我的選擇)
ADD ./conf /www/conf

# 設置Go程序權限
RUN chmod +x /usr/bin/go_server

# 容器啓動時運行的命令
ENTRYPOINT ["go_server"]

打包Docker鏡像spa

docker build --rm -t temp/go-test .

部署Go程序代理

我是經過Portainer來運行的,可視化的容器鏡像的圖形管理工具rest

version: '2'

services:
  go:
    # 鏡像
    image: temp/go-test:latest
    # 自動啓動
    restart: always
    ports:
      # 端口映射:左邊爲宿機端口、右邊爲容器端口
      - 8081:8081

方式二:code

docker run -d -p 8081:8081 --name go_test --restart=always temp/go-test
相關文章
相關標籤/搜索