一、docker-compose.yaml
version: "3.5"
services:
shop_mobile_back:
restart: always
build:
context: .
args:
ENVARG: test
dockerfile: shop.back.dockerfile
image: shop_mobile_back:test
environment:
- BEEGO_MODE=prod
ports:
- 9093:9093
networks:
- diagnosis_network
networks:
diagnosis_network:
driver: bridge
二、shop.back.dockerfile
#多阶段构建从17.05开始支持,当前镜像别名为builder
FROM golang:builder AS builder
#定义参数
ARG ENVARG
#定义工作目录,镜像各层的工作目录为当前目录
WORKDIR /go/src
#拷贝上下文下的所有文件到工作目录
COPY . .
#下载程序以来的所有包及构建生成程序
RUN git clone http://user:pwd@ip/yuyu/test.git \
&& cd shop_mobile_back \
&& CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -a -v\
&& mkdir -p /release/conf \
&& cp -r shop_mobile_back /release \
&& cp -rf ./conf/$ENVARG/. /release/conf
#二级镜像,真实需要的
FROM library/golang:runner
WORKDIR /app
#变量程序名称
COPY --from=builder /release .
# HEALTHCHECK --interval=1m30s --timeout=10s \
# CMD curl -fs http://localhost/v1/connect/status || exit 1
EXPOSE 9093
ENTRYPOINT ["./test"]