我已经为PHP开发人员创建了一个docker-compose文件,但我既无法通过APP也无法通过续集pro连接到数据库。
version: '3'
services:
#PHP Service
app:
build:
context: .
dockerfile: Dockerfile
image: digitalocean.com/php
container_name: app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
working_dir: /var/www
volumes:
- ./:/var/www
- ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
networks:
- app-network
#Nginx Service
webserver:
image: nginx:alpine
container_name: webserver
restart: unless-stopped
tty: true
volumes:
- ./:/var/www
- ./nginx/conf.d/:/etc/nginx/conf.d/
ports:
- "80:80"
- "443:443"
networks:
- app-network
#MySQL Service
db:
image: mysql:latest
container_name: db
restart: unless-stopped
tty: true
ports:
- "3306:3306"
expose:
# Opens port 3306 on the container
- '3306'
environment:
MYSQL_DATABASE: laravel
MYSQL_USER: laraveluser
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/my.cnf:/etc/my.cnf
networks:
- app-network
#Docker Networks
networks:
app-network:
driver: bridge
一切正常,并且不会显示任何错误,但是当我尝试以任何方式连接到数据库docker-compose exec app PHP artisan migrate
或续集Pro都不起作用时,我的配置有什么问题?
访问数据库的唯一方法是使用docker-compose exec db bash
完整的repo
答案 0 :(得分:0)
深入研究代码后,我发现您需要更新.env.example文件
替换第10行上的DB_HOST=db
。
您肯定已经错过了它,但是您已经在post中提到了它,标题为“步骤8-修改环境设置和运行容器” 。 / p>
答案 1 :(得分:0)
直接从GitHub存储库中获得了答案,尽管我还没有尝试过,因为我认为我现在将继续使用5.7。
您可能需要在命令中添加--default-auth=mysql_native_password
Mysql:8默认使用https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password的caching_sha2_password