亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Docker 無法連接到 cake php

Docker 無法連接到 cake php

PHP
一只萌萌小番薯 2023-05-26 16:58:02
HY 我在設置中有一個 docker 容器,我得到一個錯誤,系統無法連接到數據庫,我不知道這是怎么回事。我嘗試連接到本地主機、127.0.0.1 和 mysql,但出現相同的錯誤:CakePHP 無法連接到數據庫。無法建立與 Mysql 的連接:SQLSTATE[HY000] [2002] 沒有這樣的文件或目錄似乎無法在日志文件(apache 和 cake)中找到任何內容,我缺少什么?PHP代碼: 'default' => [            //'className' =>'Cake\Database\Connection',            'className' => Connection::class,            'driver' => Mysql::class,            //'driver' => 'Cake\Database\Driver\Mysql',            'persistent' => false,            'timezone' => 'UTC',            'encoding' => 'utf8',            'host' => 'mysql',            'username' => 'myusername',            'password' => 'mypassword',            'database' => 'myadatabase',            'flags' => [],            'cacheMetadata' => true,            'log' => false,            'quoteIdentifiers' => false,        ],docker-compose.yml#File version 2.1version: "3"services:  webserver:    build:       context: ./bin/webserver    container_name: '7.3.x-webserver'    restart: 'always'    ports:      - "${HOST_MACHINE_UNSECURE_HOST_PORT}:80"      - "${HOST_MACHINE_SECURE_HOST_PORT}:443"    links:      - mysql    volumes:       - ${DOCUMENT_ROOT-./www}:/var/www/html      - ${PHP_INI-./config/php/php.ini}:/usr/local/etc/php/php.ini      - ${VHOSTS_DIR-./config/vhosts}:/etc/apache2/sites-enabled      - ${LOG_DIR-./logs/apache2}:/var/log/apache2  mysql:    build:      context: "./bin/${DATABASE}"    container_name: '5.7-mysql'    restart: 'always'    ports:      - "${HOST_MACHINE_MYSQL_PORT}:3306"    volumes:       - ${MYSQL_DATA_DIR-./data/mysql}:/var/lib/mysql      - ${MYSQL_LOG_DIR-./logs/mysql}:/var/log/mysql    environment:      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}      MYSQL_DATABASE: ${MYSQL_DATABASE}      MYSQL_USER: ${MYSQL_USER}      MYSQL_PASSWORD: ${MYSQL_PASSWORD}  phpmyadmin:    image: phpmyadmin/phpmyadmin    container_name: 'sc-phpmyadmin'
查看完整描述

2 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

當需要建立主機和容器化 Docker 數據庫之間的連接時,您需要使用主機的環回 IP 地址 (127.0.0.1),在您的情況下,這將如下所示:


...

'host' => '127.0.0.1',

'port' => HOST_MACHINE_MYSQL_PORT

'username' => DOCKER_MYSQL_USERNAME,

'password' => DOCKER_MYSQL_PASSWORD,

'database' => DOCKER_MYSQL_DATABASE_NAME

...

HOST_MACHINE_MYSQL_PORT是主機上的端口,DB 服務從 Docker 容器指向該端口。


當您連接到在 Docker 容器內運行的 MySQL 服務器公開的端口時,應按預期建立連接。


localhost關于vs 的快速說明127.0.0.1:


localhost 是給機器本身的標準主機名,通常解析并映射到 127.0.0.1 地址。


127.0.0.1 地址是機器本身的地址,用于與最終用戶使用的同一臺機器或計算機建立 IP 連接。


查看完整回答
反對 回復 2023-05-26
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

我用環境變量更改了 app.php,更改了數據庫的用戶名和密碼。

我刪除了 ./data/mysql 的數據重建容器但仍然是同樣的錯誤我猜它與主機名有關

也嘗試使用變量 PMA_HOST 但仍然沒有成功。(本地主機也不起作用)

 'host' => env('PMA_HOST'),

如果我登錄到 phpmyadmin,我可以毫無問題地創建我的表。

如果我登錄到容器,我可以登錄并進行查詢

我看到套接字沒有通過 grepping php 設置填充,

pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock

現在這已經填滿了,但仍然沒有繼續 php 連接到 mysql(在蛋糕上,在我的數據庫測試腳本中我有連接)。


查看完整回答
反對 回復 2023-05-26
  • 2 回答
  • 0 關注
  • 251 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號