我正在尝试为我的 MySQL 容器创建一个卷,以便数据可以持久保存。因此,在我的 docker-compose 中,我创建了一个存储数据的卷。
这是我的 docker-compose :
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 container ls
它只显示投资组合容器,如果我执行 docker container ls -a
它会显示我的 MySQL 容器,但它说它在我执行 docker-compose up -d
后立即“退出”,所以显然它已启动但随后立即崩溃或发生其他事情。
如果我删除与 MySQL 卷相关的最后两行,它就可以正常工作。我的容器都启动了,应用程序正常运行。所以基本上导致容器崩溃的是体积,所以也许我没有正确定义它。你怎么看?
最佳答案
我在我的 Windows 系统上发现,虽然我的本地卷(即 ./db)看起来是空的,但实际上不是。我结束了从 bash shell 运行 ls -la
的同一文件夹,它在其中显示了一个 .sock 文件。一旦我删除了 (rm -f *.sock
) 并运行 docker-compose up --build
它似乎正确地安装了卷
https://stackoverflow.com/questions/56399269/