【问题标题】:unable to create and copy data into volume using docker-compose无法使用 docker-compose 创建数据并将其复制到卷中
【发布时间】:2020-04-30 04:57:38
【问题描述】:

我正在尝试创建一个卷并将容器数据复制到其中,但 docker volume inspect data-volume 给我错误

[]
Error: No such volume: data-volume:

我在这里要做的就是我有三个 sbt 项目 projectA, projectBprojectC. projectBProjectC 正在使用 projectA jar,所以我想创建 projectA 的图像并将 projectA 的 jar 复制到 docker 卷,在我的情况下是 data-volume 以便 projectBProjectC 可以使用data-volume 来获取jar 这是我的Dockerfile projectA

FROM hseeberger/scala-sbt:11.0.3_1.2.8_2.13.0

WORKDIR /projectA

ADD . .

RUN sbt publishLocal

这是我在projectA projectB and projectC父目录中的docker-compose.yml

version: '3.3'

services:
  commons:
   build:
    context: ./projectA
   image: projectA-test
   container_name: projectA-container-test
   volumes:
      - data-volume:/root/.ivy2/local/project/project-commons_2.12

volumes:
  data-volume:

我已经检查了图片projectA-test的内容

docker run --rm -it d73717a5e3b3  bash

并检查那里退出的文件夹

root@ed351a214093:/# cd /root/.ivy2/local/projectA/projectA-commons_2.12

我有两个问题 为什么没有创建卷?
我在上述情况下使用的方法是否正确

【问题讨论】:

  • 路径中缺少的两个As 是拼写错误吗? .../projectA/projectA....../project/project...
  • 卷不用于代码。使用 Dockerfile COPY 命令包含代码或构建的工件(如 jar 文件)。您可以COPY --from= 另一个镜像,或者您可以在 Docker 之外构建 jar 文件并使用 set 将其作为依赖项包含。

标签: docker docker-compose sbt docker-volume


【解决方案1】:

在您的 docker-compose.yml 文件中:

  volumes:
    - data-volume:/root/.ivy2/local/project/project-commons_2.12

假设您的 compose 文件位于名为 my_compose_project 的文件夹中,这是您的 compose 项目将获得的名称(除非您在 .env 中覆盖它)

组合项目名称将用作创建的所有对象(容器、网络、卷)的前缀

所以,data-volume 可能不存在,但my_compose_project_data-volume 会存在。您可以通过以下方式查看现有卷的列表:

docker volume ls

并使用

检查该特定卷
docker volume inspect my_compose_project_data-volume

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2023-03-14
    • 2016-10-08
    • 2020-05-13
    • 1970-01-01
    • 2020-03-06
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多