37 lines
932 B
Docker
37 lines
932 B
Docker
# Собираем в гошке
|
||
FROM golang:1.19 as build
|
||
|
||
ENV BIN_FILE /opt/calendar/calendar-app
|
||
ENV CODE_DIR /go/src/
|
||
|
||
WORKDIR ${CODE_DIR}
|
||
|
||
# Кэшируем слои с модулями
|
||
COPY go.mod .
|
||
COPY go.sum .
|
||
RUN go mod download
|
||
|
||
COPY . ${CODE_DIR}
|
||
|
||
# Собираем статический бинарник Go (без зависимостей на Си API),
|
||
# иначе он не будет работать в alpine образе.
|
||
ARG LDFLAGS
|
||
RUN CGO_ENABLED=0 go build \
|
||
-ldflags "$LDFLAGS" \
|
||
-o ${BIN_FILE} cmd/calendar/*
|
||
|
||
# На выходе тонкий образ
|
||
FROM alpine:3.9
|
||
|
||
LABEL ORGANIZATION="OTUS Online Education"
|
||
LABEL SERVICE="calendar"
|
||
LABEL MAINTAINERS="student@otus.ru"
|
||
|
||
ENV BIN_FILE "/opt/calendar/calendar-app"
|
||
COPY --from=build ${BIN_FILE} ${BIN_FILE}
|
||
|
||
ENV CONFIG_FILE /etc/calendar/config.toml
|
||
COPY ./configs/config.toml ${CONFIG_FILE}
|
||
|
||
CMD ${BIN_FILE} -config ${CONFIG_FILE}
|