代码之家  ›  专栏  ›  技术社区  ›  lonix

Dockerfile ENTRYPOINT忽略WORKDIR

  •  0
  • lonix  · 技术社区  · 1 年前

    Dockerfile :

    FROM mcr.microsoft.com/dotnet/runtime-deps:7.0.10-alpine3.18-amd64
    ARG APP_DIR=/var/lib/app/
    WORKDIR $APP_DIR
    # etc.
    ENTRYPOINT ["MyApp"]     # executable file located at /var/lib/app/MyApp
    

    运行该容器时:

    docker:来自守护进程的错误响应:未能为容器创建任务:未能创建填充程序任务:OCI运行时创建失败:runc创建失败:无法启动容器进程:exec:“MyApp”:在$PATH中找不到可执行文件:未知。

    我指定了 WORKDIR ,那么为什么找不到可执行文件呢?

    (如果我使用 ENTRYPOINT ["/var/lib/app/MyApp"] ,所以这不是权限问题。)

    0 回复  |  直到 1 年前
        1
  •  2
  •   BMitch    1 年前

    如果PATH不包含当前目录,则需要显式请求当前目录中的二进制文件 ./ :

    ENTRYPOINT ["./MyApp"]