我在try 运行Docker容器时遇到问题.我从Dockerfile构建一个映像:
docker build -t server -f ./backend/Dockerfile .
运行它:
docker run -it -p 8081:8081 server
收到错误:
exec /app/backend/server: no such file or directory
当我从Docker Desktop进行判断时,在容器内我看到该文件存在,并按其应有的位置创建到该位置.
我也try 更改第二阶段FROM golang:1.21-alpine,但仍然出现相同的错误.
加上FROM gcr.io/distroless/base-debian11,我得到的是:
/app/backend/server: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /app/backend/server)
/app/backend/server: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /app/backend/server)
/app/backend/server: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /app/backend/server)
我看起来像here岁,here岁,try 了很多东西.我对Docker比较陌生,我不确定如何解决这个问题.谁能帮我了解一下这个错误可能是什么原因以及如何解决它?提前谢谢!
我的文档文件如下:
# Stage 1: Building the application
FROM golang:1.21 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . ./
RUN apt-get update && apt-get install -y sqlite3 libsqlite3-dev
RUN CGO_ENABLED=1 GOOS=linux go build -a -installsuffix cgo -o /app/backend/server ./backend/backend.go
# Stage 2: Production stage using Alpine
FROM alpine:latest
RUN apk --no-cache add ca-certificates sqlite
COPY ./backend/configs/config /app/configs/config
COPY ./database/sqlite/schema.sql /app/database/sqlite/schema.sql
COPY ./tls/server.crt /tls/server.crt
COPY ./tls/server.key /tls/server.key
COPY --from=builder /app/backend/server /app/backend/server
EXPOSE 8081
ENTRYPOINT ["/app/backend/server"]