Dan*_*iel 6 mariadb docker docker-compose
我正在尝试Dockerize和Open Source我在大学二年级创建的项目,该项目使用MariaDB,phpMyAdmin和PHP/Yii Framework.
我的目标是准备好只使用一个简单的
docker-compose up
命令.
我设法获得phpMyAdmin和数据库工作之间的连接,现在我不得不试图让Docker拥有一个数据库卷的相对路径,以使其保持一致.
以下是关于音量安装的内容:
volumes:
- './database/mysql/:/var/lib/mysql'
Run Code Online (Sandbox Code Playgroud)
这是将数据库文件存储在项目中,然后我可以忽略这些文件.gitignore
.问题是当我docker-compose up使用此配置运行时,我得到:
Invalid volume specification: 'C:\Users\MySelf\coding\my_app\database\mysql:/var/lib/mysql:rw'
关于主机,我使用的是带有Docker Toolbox的Windows,但我希望docker-compose.yml无论操作系统如何都可以工作.
我看到其他类似的问题,但他们的错误来自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
Run Code Online (Sandbox Code Playgroud)
当您将主机目录挂载为数据卷时,文档说:
该
host-dir可以是绝对路径或名称值。如果您为 提供绝对路径host-dir,Docker 将绑定安装到您指定的路径。如果您提供一个名称,Docker 会通过该名称创建一个命名卷。名称值必须以字母数字字符开头,后跟
a-z0-9,_(下划线)、.(句点)或-(连字符)。
绝对路径以/(正斜杠)开头。
那解释了错误消息。
使用绝对路径将其链接到操作系统(这不是您想要的)
docker run -v c:\<path>:/c:\<container path>
docker run -v /c/<path>:/c:\<container path>
Run Code Online (Sandbox Code Playgroud)
如“在 Windows 上运行 docker-compose“入门”示例导致“无效的卷规范”中所述,首先尝试设置此docker-compose 环境变量:
.env在 docker-compose.yml 路径下创建文件,内容如下:
COMPOSE_CONVERT_WINDOWS_PATHS=1
Run Code Online (Sandbox Code Playgroud)
该OP丹尼尔确认在评论即与.env包括COMPOSE_CONVERT_WINDOWS_PATHS,相对路径工作。
我建议改用数据卷名称:它不依赖于主机路径名。
| 归档时间: |
|
| 查看次数: |
4522 次 |
| 最近记录: |