Docker compose won';如果我定义了一个卷,就不能启动MySQL
我正在尝试为MySQL容器创建一个卷,以便数据能够持久化。因此,在我的docker compose中,我创建了一个存储数据的卷 这是我的docker compose:Docker compose won';如果我定义了一个卷,就不能启动MySQL,mysql,docker,docker-compose,containers,dockerfile,Mysql,Docker,Docker Compose,Containers,Dockerfile,我正在尝试为MySQL容器创建一个卷,以便数据能够持久化。因此,在我的docker compose中,我创建了一个存储数据的卷 这是我的docker compose: version: '3' services: app: build: context: . dockerfile: .docker/Dockerfile image: portfolio ports: - 80:80 volumes: - .:/v
version: '3'
services:
app:
build:
context: .
dockerfile: .docker/Dockerfile
image: portfolio
ports:
- 80:80
volumes:
- .:/var/www/html
links:
- mysql
environment:
DB_HOST: mysql
DB_DATABASE: blog
DB_USERNAME: blog
DB_PASSWORD: ...
mysql:
image: mysql:5.7
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: blog
MYSQL_USER: blog
MYSQL_PASSWORD: ...
MYSQL_ROOT_PASSWORD: ...
volumes:
- "./db:/var/lib/mysql"
卷在文件末尾定义。不幸的是,这不起作用。如果我做一个docker容器ls
它只显示公文包容器,如果我做一个docker容器ls-a
它确实显示了我的MySQL容器,但是它说它在我做docker compose-d
之后已经“退出”,所以很明显它已经启动了,但随后立即崩溃了或者其他什么
如果我删除与MySQL卷相关的最后两行,它就可以正常工作。我的容器都已启动,应用程序工作正常。因此,导致容器崩溃的基本原因是体积,所以可能我没有正确定义它。你觉得怎么样?目录是空的吗?当你用附加的卷启动MySQL时,它会说什么吗?db目录确实是空的,但是当我编写Docker时,MySQL和Docker都不会说什么。顺便说一下,我这次尝试使用MySQL 8.0,但结果是一样的。当然,当我尝试转到应用程序时,PHP/PDO会出现错误,因为MySQL容器没有启动。糟糕的是,MySQL在我进行docker compose时确实给了我一个错误。这似乎与权限有关:“无法创建/写入文件'/var/lib/mysql/is_writable'(OS errno 13-权限被拒绝)”是否打算一次使用引号指定卷,另一次不使用引号?最初我没有使用引号,但我想尝试使用引号,但没有改变任何问题。