首页 > 解决方案 > 在容器 docker-composer 之间移动卷

问题描述

我有图像 A (some_laravel_project) 和 B (laravel_module)。Image A 是一个 Laravel 项目,看起来像这样。

正如上面的列表所示,我想使用 docker-compose 从图像 A 中的图像 B 共享一个卷。我想访问容器 B 中的文件。

这是我尝试过的 docker-compose,在 gitlab ci 中创建这些图像时没有收到任何错误。我检查了卷及其文件存储在 module_user:latest 容器中。

我想我在将卷安装到 some_laravel_project 时犯了一个错误。

version: '3'
services:
    laravel:
        image: some_laravel_project
        working_dir: /var/www
        volumes:
          - /var/www/storage
          - userdata:/var/www/Modules

    user:
        image: laravel_module
        volumes:
          - userdata:/user
volumes:
    userdata:
    webroot:

标签: dockerdocker-compose

解决方案


您用来在 docker compose 中跨容器共享卷的方法是正确的。您可以在docker-compose 卷下找到此文档

如果您想跨多个服务重用一个卷,则在顶级卷键中定义一个命名卷。将命名卷与服务一起使用,

在您的情况下,目录/var/www/Modules中的目录将与内部服务laravel中的目录具有相同的内容。您可以通过进入容器并通过运行检查每个目录来验证这一点;/useruser

docker exec -it <container-name> bash

推荐阅读