问题描述
我已经运行了docker-compose up -d
命令,但是主机上的卷目录为空。
{
"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"
}
]
- 图片:https://hub.docker.com/r/bitnami/magento/
- 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
- 所有容器都在运行(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}
问候
,我设法找到了问题,结果发现是多个问题。
- 如前所述,我的安装路径不正确
- 我也更改了docker路径,但是应该保持不变。我不知道这些必须一开始就定义
- 修复前两个问题后,我需要仔细检查用于主机的目录是否为空或根本不存在(不确定这是否是问题,但是当我确定它为空时有效)
- 我的Elasticsearch构建失败,因此阻止了进一步的Webroot开发
我已经修复了所有这些问题,并且奏效了。但是,在全部启动并运行之后,elasticsearch再次失败,但这是另一个问题,与这个问题无关。
谢谢你们的支持和努力。