【问题标题】:Directus in docker cannot connect to mysql database in dockerdocker中的Directus无法连接到docker中的mysql数据库
【发布时间】:2021-04-17 08:55:35
【问题描述】:

我有以下 docker compose 文件。 MySQL 和 phpmyadmin 正在工作,但 Directus 无法初始化,因为它无法连接到数据库。

version : '3'

services:
  db:
    image: mysql:8
    container_name: dev_mysql
  environment:
    MYSQL_USER: directus
    MYSQL_PASSWORD: pa55word
    MYSQL_ROOT_PASSWORD: pa55word
    MYSQL_DATABASE: directus
  volumes:
    - ./db_data:/var/lib/mysql
  ports:
    - 9000:3306
phpmyadmin:
  image: phpmyadmin/phpmyadmin
  container_name: dev_pma
  links:
    - db
  depends_on:
    - db
  environment:
    PMA_HOST: db
    PMA_PORT: 3306
    MYSQL_ROOT_PASSWORD: pa55word
  restart: always
  ports:
    - 8080:80
directus:
  container_name: directus
  image: directus/directus:v9.0.0-rc.59
  ports:
    - 8055:8055
  links:
    - db
  depends_on:
    - db
  environment:
    KEY: '255d861b-5ea1-5996-9aa3-922530ec40b1'
    SECRET: '6116487b-cda1-52c2-b5b5-c8022c45e263'

    DB_CLIENT: 'mysql'
    DB_HOST: 'db'
    DB_PORT: '3306'
    DB_DATABASE: 'directus'
    DB_USER: 'directus'
    DB_PASSWORD: 'pa55word'

    ADMIN_EMAIL: 'admin@directus.com'
    ADMIN_PASSWORD: 'pa55word'

我得到的 docker compose log 消息是

正在启动 dev_mysql ...完成

正在启动 dev_pma ...完成

重新创建directus ...完成

附加到 dev_mysql、dev_pma、directus

dev_mysql | 2021-04-17 08:39:14+00:00 [Note] [Entrypoint]: MySQL Server 8.0.23-1debian10 的入口点脚本已启动。

dev_mysql | 2021-04-17 08:39:14+00:00 [注意] [入口点]:切换到专用用户'mysql'

dev_pma | AH00558:apache2:无法可靠地确定服务器的完全限定域名,使用 172.21.0.3。全局设置“ServerName”指令以禁止显示此消息

dev_pma | AH00558:apache2:无法可靠地确定服务器的完全限定域名,使用 172.21.0.3。全局设置“ServerName”指令以禁止显示此消息

dev_pma | [2021 年 4 月 17 日星期六 08:39:15.199501] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.4.16 已配置 -- 恢复正常操作

dev_pma | [2021 年 4 月 17 日星期六 08:39:15.199574] [core:notice] [pid 1] AH00094:命令行:'apache2 -D FOREGROUND'

dev_mysql | 2021-04-17 08:39:14+00:00 [Note] [Entrypoint]: MySQL Server 8.0.23-1debian10 的入口点脚本已启动。

dev_mysql | 2021-04-17T08:39:15.116541Z 0 [系统] [MY-010116] [服务器] /usr/sbin/mysqld (mysqld 8.0.23) 从进程 1 开始

dev_mysql | 2021-04-17T08:39:15.122954Z 0 [警告] [MY-010159] [服务器] 设置 lower_case_table_names=2 因为 /var/lib/mysql/ 的文件系统不区分大小写

dev_mysql | 2021-04-17T08:39:15.138364Z 1 [系统] [MY-013576] [InnoDB] InnoDB 初始化已开始。

方向 | 08:39:15 ✨ 初始化引导程序...

dev_mysql | 2021-04-17T08:39:16.230177Z 1 [系统] [MY-013577] [InnoDB] InnoDB 初始化已结束。

dev_mysql | 2021-04-17T08:39:16.390962Z 0 [系统] [MY-011323] [服务器] X 插件准备好连接。绑定地址:'::' 端口:33060,套接字:/var/run/mysqld/mysqlx.sock

dev_mysql | 2021-04-17T08:39:16.419710Z 0 [系统] [MY-010229] [服务器] 开始 XA 崩溃恢复...

dev_mysql | 2021-04-17T08:39:16.426595Z 0 [系统] [MY-010232] [服务器] XA 崩溃恢复已完成。

dev_mysql | 2021-04-17T08:39:16.527057Z 0 [警告] [MY-010068] [服务器] CA 证书 ca.pem 是自签名的。

dev_mysql | 2021-04-17T08:39:16.528010Z 0 [系统] [MY-013602] [服务器] 通道 mysql_main 配置为支持 TLS。此频道现在支持加密连接。

dev_mysql | 2021-04-17T08:39:16.539042Z 0 [警告] [MY-011810] [服务器] --pid 文件的不安全配置:所有操作系统用户都可以访问路径中的位置“/var/run/mysqld”。考虑选择其他目录。

dev_mysql | 2021-04-17T08:39:16.586905Z 0 [系统] [MY-010931] [服务器] /usr/sbin/mysqld:准备连接。版本:'8.0.23' 套接字:'/var/run/mysqld/mysqld.sock' 端口:3306 MySQL 社区服务器 - GPL。

方向 | 08:39:40 � 无法连接数据库

directus 以代码 1 退出

谁能帮忙看看?谢谢。

【问题讨论】:

    标签: directus


    【解决方案1】:

    默认情况下,docker-compose 将创建一个网络,其中容器主机名基于其名称。通常容器名称是根据docker-compose.yml 中的服务名称生成的。在您的情况下,您为服务容器指定自己的名称。

    尝试将DB_HOST: 'db' 更改为

    directus:
      ...
      environment:
        DB_HOST: 'dev_mysql'
    

    https://docs.docker.com/compose/networking/

    此外,links 指令已被弃用,因此您应该将其删除。无论如何,您的文件中都没有必要,因为您 docker-compose.yml 中的所有服务都将拥有自己的专用网络。

    https://docs.docker.com/compose/compose-file/compose-file-v3/#links

    【讨论】:

      猜你喜欢
      • 2020-03-12
      • 2017-11-18
      • 1970-01-01
      • 2020-12-21
      • 2019-11-06
      • 2022-11-30
      • 1970-01-01
      • 2019-01-18
      • 2018-10-29
      相关资源
      最近更新 更多