docker - 如何访问卷的主机目录名称?
问题描述
我正在处理一个对 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>
问题是,我目前不知道<any-directory>
从容器内部获取名称,并且我不想在运行容器时为此传递额外的参数,有什么实用的方法来完成这样的事情吗?
解决方案
通常,在构建映像时,容器路径或容器进程将侦听的端口等属性是固定的。作为图像维护者,您可以选择任何您想要的路径;Docker 容器中的典型选择是/app
. 在 Dockerfile 中,您可以指定
WORKDIR /app
并假设目录名称是固定的;如果您确实需要在那里绑定安装某些东西,那么使用该图像的任何人都将始终用作选项/app
的后半部分docker run -v
。
推荐阅读
- rust - 是否可以从取决于参数的特征返回特征?
- sqlite - 在 sqlite CLI 工具上获取先前的输入
- firebase - 检查用户是否存在于 FIrestore
- vue.js - Nuxt 构建的结果是中断
- xamarin - 使用“提示=无”刷新 id 令牌不支持在 Azure 中使用自定义方案的重定向 URL
- system-verilog - Vivado 时钟实现错误 SystemVerilog
- css - 为什么 'flex' 属性不能按预期在我的 ScrollView 上工作?
- python - 如何将包含列表的 pandas 数据框上传到 Google BigQuery 数组和结构格式?
- chronicle - Chronicle Queue - 接收周期的最后一个索引
- fortran - 显示 Fortran 中意图(输出)和意图(输入)之间差异的有效程序