Description
OpenIM Server Version
main
Operating System and CPU Architecture
Linux (AMD)
Deployment Method
Docker Deployment
Issue Description and Steps to Reproduce
Use Go 1.22 Alpine as the base image for building the application
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/golang:1.22-alpine3.20 AS builder
Define the base directory for the application as an environment variable
ENV SERVER_DIR=/openim-server
Set the working directory inside the container based on the environment variable
WORKDIR $SERVER_DIR
Set the Go proxy to improve dependency resolution speed
ENV GOPROXY=https://goproxy.io,direct
Copy all files from the current directory into the container
COPY . .
RUN go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct && go mod download
Install Mage to use for building the application
RUN go install github.com/magefile/[email protected]
Optionally build your application if needed
RUN mage build
Using Alpine Linux with Go environment for the final image
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/golang:1.22-alpine3.20
Install necessary packages, such as bash
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && apk add --no-cache bash
Set the environment and work directory
ENV SERVER_DIR=/openim-server
WORKDIR $SERVER_DIR
Copy the compiled binaries and mage from the builder image to the final image
COPY --from=builder $SERVER_DIR/_output $SERVER_DIR/_output
COPY --from=builder $SERVER_DIR/config $SERVER_DIR/config
COPY --from=builder /go/bin/mage /usr/local/bin/mage
COPY --from=builder $SERVER_DIR/magefile_windows.go $SERVER_DIR/
COPY --from=builder $SERVER_DIR/magefile_unix.go $SERVER_DIR/
COPY --from=builder $SERVER_DIR/magefile.go $SERVER_DIR/
COPY --from=builder $SERVER_DIR/start-config.yml $SERVER_DIR/
COPY --from=builder $SERVER_DIR/go.mod $SERVER_DIR/
COPY --from=builder $SERVER_DIR/go.sum $SERVER_DIR/
RUN go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct && go get github.com/openimsdk/[email protected]
Set the command to run when the container starts
ENTRYPOINT ["sh", "-c", "mage start && tail -f /dev/null"]
Screenshots Link
docker运行出现了如下问题: