mysql - 如果我定义一个卷,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"

卷在文件末尾定义。不幸的是,这是行不通的。如果我执行 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/

相关文章:

f# - 如何为 Saturn 应用构建集成测试

python - 函数定义的 Pythonic 顺序是什么?

amazon-web-services - AWS Lambda 不从 API 网关读取查询参数

ionic-framework - ionic Mapbox GeolocateControl :

angular - @angular-devkit/build-ng-packagr :build

javascript - 如何让外部库 intellisense 在 vscode for java

flutter - 用前置摄像头录视频抖动屏幕变暗变窄

java - 不再支持嵌入 Flash 的视频

reactjs - 使用 react-testing-library 时让 react-datepi

java - 如何在 Reactive Spring WEBFlux(Spring 5) 中读取上传