由于投了反對票,我重構(gòu)了這個問題。就像這樣簡單:外部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('one_email@gmail.com')=> MDiPaolo\Entities\User {#3295}>>> $u->setPassword(password_hash('1234', PASSWORD_BCRYPT))=> null>>> $ur->save($u)=> null>>>在docker容器內(nèi)部:? 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系統(tǒng)有關(guān),例如兩個容器之間的通信或我如何構(gòu)建它們。這是我的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條經(jīng)驗 獲得超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
問題是現(xiàn)在我無法從外部訪問它,但是您當然可以一直去:
127.0.0.1 mysql
在你的hosts檔案
- 1 回答
- 0 關(guān)注
- 385 瀏覽
添加回答
舉報
0/150
提交
取消