MySQL과 함께 Laravel 애플리케이션이 있으며 docker-compose를 사용하여 Docker에서 실행하려고합니다. 그러나 앱이 DB에 연결하려고하면 다음과 같은 오류가 발생합니다.
Connector.php 줄 55의 PDOException : SQLSTATE [HY000] [2002] 소켓 '/var/run/mysqld/mysqld.sock'을 통해 로컬 MySQL 서버에 연결할 수 없습니다. (2)
내 docker-compose.yml :
load_balancer:
image: tutum/haproxy
links:
- web
ports:
- "80:80"
cache:
image: redis
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: Q1w2e3r4t5
MYSQL_DATABASE: regappbase
web:
image: andrewmclagan/nginx-hhvm
links:
- db
- cache
volumes:
- ./:/var/www
environment:
- APP_ENV=local
- DB_DATABASE=regappbase
- DB_PASSWORD=Q1w2e3r4t5
- VIRTUAL_HOST=laravel.local
내 .env :
APP_ENV=production
APP_DEBUG=true
APP_KEY=SomeRandomString
APP_URL=http://laravel.local
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=regappbase
DB_USERNAME=root
DB_PASSWORD=Q1w2e3r4t5
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=laravel.local
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
"localhost"에 대한 mysql 연결은 기본적으로 로컬 컴퓨터에있는 소켓을 통해 연결을 시도합니다. DB_HOST는 연결된 컨테이너 이름 "db"여야합니다.
로부터 MYSQL 워드 프로세서 :
Unix에서 MySQL 프로그램은 호스트 이름 localhost를 특별히 다른 네트워크 기반 프로그램과 비교할 때 예상하는 것과 다른 방식으로 취급합니다. localhost에 대한 연결의 경우 MySQL 프로그램은 Unix 소켓 파일을 사용하여 로컬 서버에 연결을 시도합니다. 이것은 포트 번호를 지정하기 위해 --port 또는 -P 옵션이 제공된 경우에도 발생합니다. 클라이언트가 로컬 서버에 TCP / IP 연결을 설정하도록하려면 --host 또는 -h를 사용하여 호스트 이름 값 127.0.0.1 또는 로컬 서버의 IP 주소 또는 이름을 지정하십시오. --protocol = TCP 옵션을 사용하여 localhost의 경우에도 연결 프로토콜을 명시 적으로 지정할 수도 있습니다. 예를 들면 :
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다