首页 > 解决方案 > 如果我定义一个卷,Docker-compose 将不会启动 MySQL

问题描述

我正在尝试为我的 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"

卷在文件末尾定义。不幸的是,这行不通。如果我执行 adocker container ls它只显示投资组合容器,如果我执行 adocker container ls -a它确实显示我的 MySQL 容器,但它说它在我执行之后立即“退出” docker-compose up -d,所以显然它已启动但随后立即崩溃或其他什么.

如果我删除与 MySQL 卷相关的最后 2 行,它工作正常。我的容器都启动了,应用程序正常运行。所以基本上导致容器崩溃的原因是音量,所以也许我没有正确定义它。你怎么看 ?

标签: mysqldockerdocker-composecontainersdockerfile

解决方案


推荐阅读