Docker撰写主机卷目录为空

问题描述

我已经运行了docker-compose up -d命令,但是主机上的卷目录为空。

  1. Ubuntu 20.04
  2. docker-compose up -d
  3. 页面按预期显示在浏览器中
  4. docker volume inspect显示如下:
    {
        "CreatedAt": "2020-08-29T22:26:49+01:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/magento-sandBox_magento_data/_data","Name": "magento-sandBox_magento_data","Options": null,"Scope": "local"
    }
]
  1. 图片https://hub.docker.com/r/bitnami/magento/
  2. yml文件/home/tomas/Documents/Projects/Magento/magento-sandBox):
version: '2'
services:
  mariadb:
    image: 'docker.io/bitnami/mariadb:10.3-debian-10'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_USER=tomas
      - MARIADB_PASSWORD=tomas
      - MARIADB_DATABASE=magento_sandBox
    volumes:
      - 'mariadb_data:/home/tomas/Documents/Projects/Magento/magento-sandBox/db'
  magento:
    image: 'docker.io/bitnami/magento:2-debian-10'
    environment:
      - MARIADB_HOST=mariadb
      - MARIADB_PORT_NUMBER=3306
      - MAGENTO_DATABASE_USER=tomas
      - MAGENTO_DATABASE_PASSWORD=tomas
      - MAGENTO_DATABASE_NAME=magento_sandBox
      - ELASTICSEARCH_HOST=elasticsearch
      - ELASTICSEARCH_PORT_NUMBER=9200
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - 'magento_data:/home/tomas/Documents/Projects/Magento/magento-sandBox/webroot'
    depends_on:
      - mariadb
      - elasticsearch
  elasticsearch:
    image: 'docker.io/bitnami/elasticsearch:6-debian-10'
    volumes:
      - 'elasticsearch_data:/home/tomas/Documents/Projects/Magento/magento-sandBox/elasticsearch/data'
volumes:
  elasticsearch_data:
    driver: local
  mariadb_data:
    driver: local
  magento_data:
    driver: local
  1. 所有容器都在运行(docker ps命令对此进行验证)

为什么我的/ home / tomas / Documents / Projects / Magento / magento-sandBox / webroot为空?我的意思是为什么mountpoint不能在文件中反映配置?

如何获得该目录包含用于在浏览器中呈现页面的所有文件的结果?

解决方法

嗯,您确实创建了卷,但是没有为它们分配任何源路径。因此它们存储在默认路径中。 (在ubuntu下,我知道它是/ var / lib / docker / volumes / HERE)。无论如何,您都必须找出要挂载的数据在docker机器上的存储位置。 (您通常在dockerfiles中设置路径)

无论如何,正确的语法是

/path/to/host/machine:/path/in/container/machine

一旦发现问题,请继续在目录中创建一个.env文件,该目录用于存储容器和compose。它包含

HOST_BASE_DATA_PATH=/home/tomas/Documents/Projects/Magento/magento-sandbox
MAGENTO_DATA_PATH=/insert/the/path/inside/the/magento/container
ELASTICSEARCH_DATA_PATH=/insert/the/path/inside/the/elastic/container
MARIADB_DATA_PATH=/insert/the/path/inside/the/mariadb/container

我们将使用这些变量来获取更清洁的docker-compose文件。

在您的撰写中,我们将使用以下属性指定卷: (我希望有一个例子可以使它足够清楚)

mariadb:
    image: 'docker.io/bitnami/mariadb:10.3-debian-10'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_USER=tomas
      - MARIADB_PASSWORD=tomas
      - MARIADB_DATABASE=magento_sandbox
    volumes:
      - type: bind
        # where it will be stored on the host machine
        source: ${HOST_BASE_DATA_PATH}/mariadb
        # where it is stored on the docker container
        target: ${MARIADB_DATA_PATH}

问候

,

我设法找到了问题,结果发现是多个问题。

  1. 如前所述,我的安装路径不正确
  2. 我也更改了docker路径,但是应该保持不变。我不知道这些必须一开始就定义
  3. 修复前两个问题后,我需要仔细检查用于主机的目录是否为空或根本不存在(不确定这是否是问题,但是当我确定它为空时有效)
  4. 我的Elasticsearch构建失败,因此阻止了进一步的Webroot开发

我已经修复了所有这些问题,并且奏效了。但是,在全部启动并运行之后,elasticsearch再次失败,但这是另一个问题,与这个问题无关。

谢谢你们的支持和努力。