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

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

可以從docker容器外部連接到數據庫,但不能從內部連接(在laravel中)

可以從docker容器外部連接到數據庫,但不能從內部連接(在laravel中)

PHP
慕容3067478 2021-05-07 05:09:25
由于投了反對票,我重構了這個問題。就像這樣簡單:外部Docker容器:?  backoffice git:(master) ? php artisan tinkerPsy Shell v0.9.9 (PHP 7.2.15 — cli) by Justin Hileman>>> $ur = app(MDiPaolo\Repositories\UserRepository::class)=> App\Infrastructure\Repositories\Doctrine\UserDoctrineRepository {#3159}>>> $u = new MDiPaolo\Entities\User=> MDiPaolo\Entities\User {#3295}>>> $u->setEmail('[email protected]')=> MDiPaolo\Entities\User {#3295}>>> $u->setPassword(password_hash('1234', PASSWORD_BCRYPT))=> null>>> $ur->save($u)=> null>>>在docker容器內部:?  backoffice git:(master) ? docker exec -it backoffice_web_1 bashroot@042969f0229c:/var/www/html# php artisan tinkerPsy Shell v0.9.9 (PHP 7.2.17 — cli) by Justin Hileman>>> $ur = app(MDiPaolo\Repositories\UserRepository::class)Doctrine/DBAL/Exception/ConnectionException with message 'An exception occurred in driver: SQLSTATE[HY000] [2002] Connection refused'>>>我有種感覺,它與docker系統有關,例如兩個容器之間的通信或我如何構建它們。這是我的Dockerfile。FROM php:7.2-apacheRUN docker-php-ext-install pdo_mysql && docker-php-ext-enable pdo_mysqlRUN apt-get update && apt-get install nano && mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"RUN a2enmod rewriteRUN service apache2 restartENV APACHE_DOCUMENT_ROOT=/var/www/html/publicRUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.confRUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.confdocker-compose文件:version: '3.1'services:    web:        build: .        ports:            - "8080:80"        links:            - mysql        depends_on:            - mysql        volumes:            - ./:/var/www/html    mysql:        image: mysql:5.7.25        ports:            - "3306:3306"        environment:            MYSQL_ROOT_PASSWORD: backoffice
查看完整描述

1 回答

?
holdtom

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

好的,我找到了解決方案。


在我的情況下,.env文件中的DB_HOST字段必須等于docker-compose.yml文件中mysql容器的名稱mysql。


DB_CONNECTION=mysql

DB_HOST=mysql

DB_PORT=3306

DB_DATABASE=dashboard

DB_USERNAME=root

DB_PASSWORD=backoffice

問題是現在我無法從外部訪問它,但是您當然可以一直去:


127.0.0.1    mysql

在你的hosts檔案


查看完整回答
反對 回復 2021-05-07
  • 1 回答
  • 0 關注
  • 390 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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