FROM golang:alpine as builder LABEL org.opencontainers.image.authors="psssix " # Build Delve RUN go install github.com/go-delve/delve/cmd/dlv@latest # set build environmet variables needed for multistage building ENV CGO_ENABLED=0 \ GOOS=linux # source workdir WORKDIR /source # Copy and download dependency using go mod # Vendoring COPY go.mod go.sum ./ RUN go mod download # Copy the code into the container COPY . . # Build the application RUN go build -gcflags="all=-N -l" -o bin/app . FROM alpine:latest # Add entrypoint dependency RUN apk add --no-cache bash #RUN apk add --no-cache mysql-client mariadb-connector-c # Move to /app directory as the place for resulting binary folder WORKDIR / # Copy binary from build to main folder COPY --from=builder /go/bin/dlv . COPY --from=builder /source/bin/app app # Copy some application assets COPY --from=builder /source/deploy/docker/environment.sh ./deploy/docker/environment.sh COPY --from=builder /source/deploy/docker/logging.sh ./deploy/docker/logging.sh COPY --from=builder /source/entrypoint.sh . #COPY --from=builder /source/migrations ./migrations #COPY ./database/data.json /database/data.json # Export necessary port EXPOSE 4040 # entry and start entrypoint with some actions and checks before CMD ENTRYPOINT ["bash", "/entrypoint.sh" ] # Command to run when starting the container CMD ["/dlv", "--listen=:4040", "--headless=true", "--api-version=2", "--accept-multiclient", "exec", "/app"]