【问题标题】:How can i access the host directory name of a volume?如何访问卷的主机目录名称?
【发布时间】:2021-12-09 12:07:00
【问题描述】:

我正在处理一个对 Lua 项目进行 lints 的 Docker 映像,容器可以通过卷访问该映像,Dockerfile 看起来像这样(它的相关部分):

FROM debian:bullseye-slim
SHELL ["/bin/bash", "-O", "globstar", "-c"]

COPY --from=builder /usr/local/bin /usr/local/bin
COPY lint.sh /

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install --no-install-recommends gcc=4:10.2.1-1 luarocks=2.4.2+dfsg-1.1 -y && \
    rm -rf /var/lib/apt/lists/* && \
    luarocks install luacheck

CMD PROJECT_DIRECTORY=$(ls -d */ | grep -vE "bin|boot|dev|etc|home|lib|lib64|media|mnt|opt|proc|root|run|sbin|srv|sys|tmp|usr|var") && \
    cd $PROJECT_DIRECTORY && \
    stylua ./**/*.lua && \
    lua-format -i ./**/*.lua && \
    luacheck ./**/*.lua && \
    selene ./**/*.lua

一旦构建了镜像,容器就会像这样被调用:

docker run -v $PWD:/<any-directory> <image>

问题是,我目前无法从容器内部获取&lt;any-directory&gt; 名称,而且我不想在运行容器时传递额外的参数,有什么实用的吗?怎么办?

【问题讨论】:

    标签: docker dockerfile docker-volume


    【解决方案1】:

    通常,在构建映像时,容器路径或容器进程将侦听的端口等属性是固定的。作为图像维护者,您可以选择任何您想要的路径; Docker 容器中的典型选择是/app。在 Dockerfile 中你可以指定

    WORKDIR /app
    

    并假设目录名称是固定的;如果您确实需要在那里绑定安装某些东西,那么使用该图像的任何人总是使用/app 作为docker run -v 选项的后半部分。

    【讨论】:

      猜你喜欢
      • 2017-08-21
      • 2012-12-24
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多