Docker 컨테이너가 실행 중입니다.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bf78987a0f5d hakase-labs/laravel "docker-php-entrypoi…" 56 minutes ago Up 56 minutes 9000/tcp app
d1fe2f9171bd mysql:5.7 "docker-entrypoint.s…" 56 minutes ago Up 56 minutes 33060/tcp, 0.0.0.0:3312->3306/tcp db
43f1025c1a59 nginx:alpine "nginx -g 'daemon of…" 56 minutes ago Restarting (1) 54 seconds ago nginx
docker
이것은 mysql
, 및 가 포함된 Laravel 설치 입니다 nginx
. Docker 컨테이너 내에서 마이그레이션을 실행하고 싶습니다.
docker-compose exec app php artisan migrate
내 데이터베이스 서비스는 매우 간단합니다 docker-compose.yml
.
#MySQL Service
db:
image: mysql:5.7
container_name: db
restart: unless-stopped
tty: true
ports:
- "3312:3306"
environment:
MYSQL_DATABASE: laravel
MYSQL_USER: laravel
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
volumes:
- mysqldata:/var/lib/mysql/
networks:
- mynet
.env
:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3312
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=password
내가 시도한 것;
DB_HOST=mysql
데이터베이스 포트 번호를 변경하십시오.
docker-compose exec app php artisan config:clear
그리고docker-compose exec app php artisan cache:clear
컨테이너에 로그인 docker-compose exec app ash
하고 거기에서 마이그레이션을 실행해 보십시오. 동일한 오류 메시지가 적용됩니다.
하지만 주사위는 없습니다. 컨테이너 artisan migrate
내부에 무슨 문제가 있나요 docker
?
편집: .env
컨테이너 내부를 편집하고 있습니다.
docker-compose exec app vim .env
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:TWmjLcVOQFMIiKOKvtKQoFS/LMoH05ry/DF6148izL8=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3307
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=password
따라서 내 로컬 복사본으로 전파됩니다.
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3307
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=password
다시 실행해도 여전히 마이그레이션이 없습니다.
$ docker-compose exec app php artisan cache:clear
Application cache cleared!
$ docker-compose exec app php artisan config:clear
Configuration cache cleared!
$ docker-compose exec app php artisan migrate
Illuminate\Database\QueryException : SQLSTATE[HY000] [2002]
Connection refused (SQL: select *
답변1
이 튜토리얼을 따라하신 것 같습니다.dockerizing-laravel-with-nginx-mysql-and-docker-compose
DB_HOST
에서 지정하는 서비스 이름이어야 docker-compose.yml
하며 DB_PORT
포트 매핑에서 지정하는 포트가 있어야 합니다.
.env
파일을 편집할 때 :
DB_CONNECTION=mysql
DB_HOST=db # <= service-name of db
DB_PORT=3306 # <= port-mapping from service: db
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=password
./artisan migrate
데이터베이스에 연결하십시오.
답변2
이것은 나에게 효과적입니다. 재구축 컨테이너를 사용해야 할 수도 있다고 생각합니다 docker-compose up --build
. 다른 사람들에게 유용할 수 있습니다.
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306