docker-compose 并列出卷内容

标签 docker docker-compose

也许我只是没有正确理解,但我试图从视觉上验证我是否正确使用了卷。
在我的 docker-compose 中,我会有类似的东西

some-project:
  volumes:
   - /some-local-path/some-folder:/v-test
我可以通过“ls -la/some-local-path/some-folder”验证它的内容
在一些项目 Dockerfile 我会有类似的东西
  RUN ls -la /v-test
返回“没有这样的文件或目录”
这是正确的使用方法吗?如果是这样,为什么我不能从容器内查看内容?

最佳答案

Dockerfile 中的所有内容在 build: 之外的任何内容之前运行阻止 docker-compose.yml文件被考虑。镜像构建看不到仅在 docker-compose.yml 中声明的卷或环境变量,并且无法访问其他服务。
在您的示例中,首先是 Dockerfile尝试 ls目录,然后 Compose 将使用绑定(bind)挂载启动容器。
如果你只是为了验证,可以 docker-compose run 一个容器,其大部分设置来自 docker-compose.yml文件,但另一个命令:

docker-compose run some-project \
  ls -la /v-test
(这样做需要图像的 CMD 是一个格式正确的 shell 命令;或者它没有 ENTRYPOINT 或者 ENTRYPOINT 是一个以 exec "$@" 结尾的包装脚本来运行 CMD。如果你只有 ENTRYPOINT ,将其更改为 CMD ;如果您已将命令拆分为两个指令,请将其合并到单个 CMD 行中。)

关于docker-compose 并列出卷内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64574094/

相关文章:

linux - docker-compose 没有部署到远程机器

Docker Compose 开发和生产环境最佳工作流程

mysql - SQLException : Access denied when connecting to mysql in docker

docker - 如何在 Azure Devops 发布定义中的 Dockerized Web 应用程序中设置环境变量

mysql - Docker Compose - 没有在 init 命令中获取转储文件?

java - 当通过服务名称从其他 docker-compose 服务请求时,Spring Boot REST 应用程序返回 400

docker - 如何在 Docker 之外将 NGINX 反向代理到 proxy_pass 到 docker 容器

docker - 如何使用 gcloud 或其他 CLI 在 Google Container Registry 中列出已发布的容器镜像

docker - docker compose 中的 Airflow 更改端口

node.js - docker-compose “up”与 “run”会产生不同的安装量