Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker compose won';如果我定义了一个卷,就不能启动MySQL_Mysql_Docker_Docker Compose_Containers_Dockerfile - Fatal编程技术网

Docker compose won';如果我定义了一个卷,就不能启动MySQL

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

我正在尝试为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容器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-权限被拒绝)”是否打算一次使用引号指定卷,另一次不使用引号?最初我没有使用引号,但我想尝试使用引号,但没有改变任何问题。