dsx137 485bbb5b3c
refactor(ci): actions and dockerfile (#3733)
* feat(build): add unified server image build flow

Consolidate service image definitions into a single server build setup, and update CI workflows to use it.

# Conflicts:
#	.github/workflows/docker-build-and-release-services-images.yml
#	.github/workflows/go-build-test.yml
#	Dockerfile
#	build/images/Dockerfile
#	build/images/openim-api/Dockerfile
#	build/images/openim-crontask/Dockerfile
#	build/images/openim-msggateway/Dockerfile
#	build/images/openim-msgtransfer/Dockerfile
#	build/images/openim-push/Dockerfile
#	build/images/openim-rpc-auth/Dockerfile
#	build/images/openim-rpc-conversation/Dockerfile
#	build/images/openim-rpc-friend/Dockerfile
#	build/images/openim-rpc-group/Dockerfile
#	build/images/openim-rpc-msg/Dockerfile
#	build/images/openim-rpc-third/Dockerfile
#	build/images/openim-rpc-user/Dockerfile
#	build/images/openim-tools/component/Dockerfile

* fix(ci): correct Docker image tag generation
2026-06-04 18:15:21 +08:00

30 lines
615 B
Docker

FROM golang:1.25-alpine AS builder
ARG CMD_PATH
ARG BINARY_NAME
ARG RELEASE=false
ENV SERVER_DIR=/openim-server
WORKDIR $SERVER_DIR
COPY . .
RUN go mod tidy
RUN if [ "$RELEASE" = "true" ]; then \
go build -trimpath -ldflags "-s -w" -o _output/${BINARY_NAME} ./${CMD_PATH}; \
else \
go build -o _output/${BINARY_NAME} ./${CMD_PATH}; \
fi
FROM alpine:latest
RUN apk add --no-cache bash
ARG BINARY_NAME
ENV BINARY_NAME=${BINARY_NAME}
ENV SERVER_DIR=/openim-server
WORKDIR $SERVER_DIR
COPY --from=builder $SERVER_DIR/_output $SERVER_DIR/_output
ENTRYPOINT ["sh", "-c", "_output/${BINARY_NAME}"]