鏡像linux
端口映射golang
備註docker
文章使用到的軟件:架構
目標工具
構建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