使用 Docker Compose 运行 MySQL 数据库

使用 Docker Compose 运行 MySQL 数据库

我陷入了与 Ubuntu、Docker、Virtual Box 共享文件夹相关的问题。抱歉,我无法详细说明,但我不知道问题的根源是什么。
当我运行“docker-compose up”命令并尝试运行官方 MySQL 容器时,它就会出现。
但首先让我解释一下背景。

我有一个 Wordpress 项目。
我的计划是在我的主机操作系统(Windows 10 Home)上编写代码,然后在我的客户操作系统(Ubuntu 18.04.2)上运行代码。更详细地说,我将在我的客户操作系统上使用 Docker,并提供 3 个容器,并使用 Docker Compose 构建/运行它们。
容器将是这些:

  • WordPress 的
  • MySQL
  • PHPMyAdmin

您可以在下面找到我的 Docker Compose 文件的完整内容。
我对数据库容器有疑问,这就是我注释掉其他内容的原因。

version: '3'

services:
  
  # wordpress
  # wordpress:
  #   image: 'wordpress:latest'
  #   container_name: 'wordpress1-wordpress'
  #   networks:
  #     - wordpress1-wordpress-network
  #   volumes:
  #     - ./:/var/www/html
  #   restart: always
  #   depends_on:
  #     - database
  #   environment:
  #     WORDPRESS_DB_HOST: database:3306
  #     WORDPRESS_DB_USER: admin
  #     WORDPRESS_DB_PASSWORD: wp123
  #   ports:
  #     - '8000:80'
  
  # database
  database:
    image: 'mysql:latest'
    container_name: 'wordpress1-database'
    networks:
      - wordpress1-wordpress-network
    volumes:
      - ./db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: wordpress1
      MYSQL_USER: admin
      MYSQL_PASSWORD: wp123

  # phpmyadmin
  # phpmyadmin:
  #   image: 'phpmyadmin/phpmyadmin:latest'
  #   container_name: 'wordpress1-phpmyadmin'
  #   networks:
  #     - wordpress1-wordpress-network
  #   restart: always
  #   depends_on:
  #     - database
  #   environment:
  #     PMA_HOST: database:3306
  #     MYSQL_ROOT_PASSWORD: root_password
  #   ports:
  #     - 8080:80

networks:
  wordpress1-wordpress-network: 
    driver: bridge

客户操作系统已在后台启动。
我在主机操作系统上使用 Visual Studio Code。
我打开一个新终端并建立 SSH 连接,这样我就可以从这里使用 Docker。
一开始,我的文件夹只包含“docker-compose.yaml”文件,没有其他内容。
在第一个“docker-compose up”命令之后,会创建一个新的空文件夹,并且我的终端中会显示一些错误日志。

wordpress1-database | 2019-08-08T09:37:33.088721Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.

您可以在此链接下看到更详细的打印屏幕截图

当我更改 yaml 文件中的 Guest OS 文件夹路径时,一切都正常。例如:将“./db_data”部分更改为“/var/db_data”,然后我看不到任何错误。
这就是为什么我认为这应该是权限错误。

您可以在下面看到当前设置:

webdev@docker:/media/sf_development/_practice/wordpress1$ ll
total 4
drwxrwx--- 1 root vboxsf    0 Aug  8 09:37 ./
drwxrwx--- 1 root vboxsf    0 Jul 28 07:59 ../
drwxrwx--- 1 root vboxsf    0 Aug  8 09:46 db_data/
-rwxrwx--- 1 root vboxsf 1285 Aug  8 09:37 docker-compose.yaml*
webdev@docker:/media/sf_development/_practice/wordpress1$

您可以看到当前的群组设置:

webdev:x:1004:docker,vboxsf
vboxusers:x:113:
vboxsf:x:114:webdev,docker
docker:x:999:webdev

将共享卷保存在同一个项目文件夹中非常重要,那么我该如何解决这个问题呢?

提前感谢任何提示和建议!

答案1

mysql:latest我在5.8中遇到了这个问题。5.7 已修复。

database:
    image: 'mysql:5.7' <--

查看其他回答

相关内容