Docker 卷 MariaDB Windows
Docker volumes MariaDB Windows
我正在尝试 Docker 开源我在大学二年级创建的项目,该项目使用 MariaDB、phpMyAdmin 和 PHP/Yii 框架。
我的 objective 是让它准备好只使用一个简单的
docker-compose up
命令。
我设法让 phpMyAdmin 和数据库之间的连接正常工作,现在我一直在尝试让 Docker 拥有数据库卷的相对路径,以使其保持一致。
这是我关于卷安装的信息:
volumes:
- './database/mysql/:/var/lib/mysql'
这是将数据库文件存储在项目中,然后我可以忽略 .gitignore
中的那些文件
问题是当我使用此配置 运行 docker-compose up
时,我得到:
Invalid volume specification: 'C:\Users\MySelf\coding\my_app\database\mysql:/var/lib/mysql:rw'
关于主机,我正在使用 Windows 和 Docker 工具箱,但我希望 docker-compose.yml
能够工作,而不管 OS。
我见过其他类似的问题,但它们的错误来自 Windows 上的绝对路径问题,我不在寻找。
编辑:添加正确的最终 docker-compose.yml,希望它可以帮助
version: '2'
services:
web_db:
build: ./database/mysql
command: "mysqld --innodb-buffer-pool-size=20M"
volumes:
- ./database/mysql/data/:/var/lib/mysql
- ./database/mysql/initDB/create_tables.sql:/docker-entrypoint-initdb.d/create_tables.sql
environment:
MYSQL_ROOT_PASSWORD: 'YOURPASSWORD'
MYSQL_DATABASE: 'support-technique'
MYSQL_ROOT_HOST: '172.17.0.1'
ports:
- "3306:3306"
container_name: web_db
web:
build: .
depends_on:
- web_db
links:
- web_db:db
ports:
- "80:80"
phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- web_db
links:
- web_db:mysql
ports:
- "8181:80"
environment:
PMA_HOST: mysql
当您 Mount a host directory as a data volume 时,文档说:
The host-dir
can either be an absolute path or a name value. If you supply an absolute path for the host-dir
, Docker bind-mounts to the path you specify. If you supply a name, Docker creates a named volume by that name.
A name value must start with an alphanumeric character, followed by a-z0-9
, _
(underscore), .
(period) or -
(hyphen).
An absolute path starts with a /
(forward slash).
解释错误信息。
使用绝对路径links it to the OS(这不是你想要的)
docker run -v c:\<path>:/c:\<container path>
docker run -v /c/<path>:/c:\<container path>
如“", try first setting this docker-compose environment variable:
Create .env
file in the path docker-compose.yml is placed with following content:
COMPOSE_CONVERT_WINDOWS_PATHS=1
与.env
包括COMPOSE_CONVERT_WINDOWS_PATHS
的OP Daniel confirms ,相对路径有效 。
我建议改用 data volume 名称:它不依赖于主机路径名。
我正在尝试 Docker 开源我在大学二年级创建的项目,该项目使用 MariaDB、phpMyAdmin 和 PHP/Yii 框架。
我的 objective 是让它准备好只使用一个简单的
docker-compose up
命令。
我设法让 phpMyAdmin 和数据库之间的连接正常工作,现在我一直在尝试让 Docker 拥有数据库卷的相对路径,以使其保持一致。
这是我关于卷安装的信息:
volumes:
- './database/mysql/:/var/lib/mysql'
这是将数据库文件存储在项目中,然后我可以忽略 .gitignore
中的那些文件
问题是当我使用此配置 运行 docker-compose up
时,我得到:
Invalid volume specification: 'C:\Users\MySelf\coding\my_app\database\mysql:/var/lib/mysql:rw'
关于主机,我正在使用 Windows 和 Docker 工具箱,但我希望 docker-compose.yml
能够工作,而不管 OS。
我见过其他类似的问题,但它们的错误来自 Windows 上的绝对路径问题,我不在寻找。
编辑:添加正确的最终 docker-compose.yml,希望它可以帮助
version: '2'
services:
web_db:
build: ./database/mysql
command: "mysqld --innodb-buffer-pool-size=20M"
volumes:
- ./database/mysql/data/:/var/lib/mysql
- ./database/mysql/initDB/create_tables.sql:/docker-entrypoint-initdb.d/create_tables.sql
environment:
MYSQL_ROOT_PASSWORD: 'YOURPASSWORD'
MYSQL_DATABASE: 'support-technique'
MYSQL_ROOT_HOST: '172.17.0.1'
ports:
- "3306:3306"
container_name: web_db
web:
build: .
depends_on:
- web_db
links:
- web_db:db
ports:
- "80:80"
phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- web_db
links:
- web_db:mysql
ports:
- "8181:80"
environment:
PMA_HOST: mysql
当您 Mount a host directory as a data volume 时,文档说:
The
host-dir
can either be an absolute path or a name value. If you supply an absolute path for thehost-dir
, Docker bind-mounts to the path you specify. If you supply a name, Docker creates a named volume by that name.A name value must start with an alphanumeric character, followed by
a-z0-9
,_
(underscore),.
(period) or-
(hyphen).
An absolute path starts with a/
(forward slash).
解释错误信息。
使用绝对路径links it to the OS(这不是你想要的)
docker run -v c:\<path>:/c:\<container path>
docker run -v /c/<path>:/c:\<container path>
如“
Create
.env
file in the path docker-compose.yml is placed with following content:
COMPOSE_CONVERT_WINDOWS_PATHS=1
与.env
包括COMPOSE_CONVERT_WINDOWS_PATHS
的OP Daniel confirms
我建议改用 data volume 名称:它不依赖于主机路径名。