【发布时间】:2022-01-24 13:20:30
【问题描述】:
在成功安装mysql、nginx、php等容器后,我正在尝试在docker app容器bash中运行“php artisan migrate”。
但是出现了这个错误:
SQLSTATE[HY000] [2002] Connection denied (SQL: select * from information_schema.tables where table_schema = code_clan and table_name = migrations and table_type = 'B ASE表')
这是我的文件夹/文件结构:
> docker-my-app(folder)
> docker(folder)
> nginx(folder)
> default.conf
> php-fpm(folder)
> Dockerfile
> src(folder)
> www(folder)
> Laravel Project Files...
> **.env**
**docker-compose.yml**
这是我的作曲家文件(docker-compose.yml):
version: '3.8'
services:
nginx:
ports:
- "80:80"
image: nginx
tty : true
restart: unless-stopped
volumes:
- ./src/www:/usr/share/nginx/html:delegated
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
networks:
- thenetwork
app:
build: ./docker/php-fpm
container_name: myapp
tty : true
restart: unless-stopped
environment:
SERVICE_NAME: myapp
SERVICE_TAGS: dev
networks:
- thenetwork
working_dir: /usr/share/nginx/html
volumes:
- ./src/www:/usr/share/nginx/html
- ./data/upload:/storage/uploads
memcached:
image: memcached
mysql:
ports:
- "3306:3306"
image: mysql:5.6
restart: unless-stopped
tty: true
volumes:
- mysqlvolume:/var/lib/mysql
- ./data/mysql-import:/docker-entrypoint-initdb.d
environment:
- MYSQL_ROOT_PASSWORD=pwd
- MYSQL_HOST=localhost
- MYSQL_PORT=3306
networks:
- thenetwork
redis:
ports:
- "6379:6379"
image: redis
#Docker netwtorks
networks:
thenetwork:
driver: bridge
volumes:
mysqlvolume:
driver: local
这是我的 .env 文件(在 laravel 项目的根目录中):
APP_NAME=MyApp
APP_ENV=local
APP_KEY=base64:generatedKey
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=daily
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lara_app
DB_USERNAME=root
DB_PASSWORD=pwd
...
在 docker-my-app cmd 中,我运行:
docker exec -it myapp bash
在里面,我跑:
/usr/share/nginx/html$ php artisan migrate
所有容器,包括 mysql 都运行成功。 并且发生了开头提到的错误。
你能弄清楚这里发生了什么吗?
【问题讨论】:
-
在 .env 中将
127.0.0.1更改为mysql并运行php artisan optimize