gpt4 book ai didi

Docker - Alpine 图像上的 WORKDIR 问题(多阶段构建)

转载 作者:行者123 更新时间:2023-12-02 18:26:48 25 4
gpt4 key购买 nike

我的 Dockerfile 有第二个阶段:

############################################ MULTI STAGE BUILD PART 2 ##############################################

# Start from alpine image
FROM alpine

# Creating work directory
WORKDIR /service

# Copy the certificats and executable into new Docker image
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=builder /service/main /service/
COPY --from=builder /service/.credentials /service/.credentials/

# Expose port
EXPOSE ${GRPC_PORT}
EXPOSE ${REST_PORT}

## Get required ARGs and put them into ENVs variables
ARG ENVIRONMENT
ARG NAMESPACE
ARG GRPC_PORT
ARG REST_PORT
ENV _ENVIRONMENT=${ENVIRONMENT}
ENV _NAMESPACE=${NAMESPACE}
ENV _GRPC_PORT=${GRPC_PORT}
ENV _REST_PORT=${REST_PORT}

### HERE YOU CAN TEST WITH ANY OF THE FOLLOWING ENTRYPOINT

# The One I need
ENTRYPOINT /main "ENVIRONMENT=${_ENVIRONMENT}" "NAMESPACE=${_NAMESPACE}" "GRPC_PORT=${_GRPC_PORT}" "REST_PORT=${_REST_PORT}"

# This one isn't able to resolve ENVs variables, but I use it as an example for my ISSUE
ENTRYPOINT [ "/main" ]

As you can see, the WORKDIR is set to be /service

但是,如果您使用第一个入口点运行图像,您会得到:

/bin/sh:/main: 未找到

如果您使用第二个入口点运行,您将获得:

docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:346:启动容器进程导致“exec:\”/main\“:stat/main:没有这样的文件或目录”:未知.

注意: 另一个有趣的地方是 COPY --from=builder ... 我需要将目标设置为 /service/ 否则我的文件会被复制到 / 目录


根据documentation :

The WORKDIR instruction sets the working directory for any RUN, CMD, ENTRYPOINT, COPY and ADD instructions that follow it in the Dockerfile.


有什么想法吗?它真的与我或 Docker/alpine 有关吗?

最佳答案

入口点 需要是./main。

/main 是一个绝对路径,指的是根目录下的 main。

因为您在 /service 中,您将需要一个相对路径。您需要 ./main,它指向 /service/main

关于Docker - Alpine 图像上的 WORKDIR 问题(多阶段构建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60327050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com