在我的PC上,我正在运行Windows10。我有一台运行Ubuntu 18.04的虚拟机。我有一个在Docker上运行的Laravel项目。我有一个在我的虚拟机上运行的MySQL服务器。我使用docker-compose.yml和Dockerfile构建项目。我没有MySQL数据库容器:MySQL在我的虚拟机上运行。
我的问题是我无法访问名为“ mydatabase”的MySQL数据库。每当我执行php artisan migrate
或在localhost:8080
转到我的项目时,都会收到错误消息
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `sometable`)
如果我在具有Ubuntu操作系统的计算机上启动该项目,则可以运行该项目。但不适用于虚拟机。我可以使用
从虚拟机访问我的MySQL服务器 mysql --host=127.0.0.1 -u root -p
,我的密码也是root
。
.env文件
DB_HOST=127.0.0.1
HOSTNAME=b2d4219c8143
APP_NAME=myLaravelApp
APP_URL=http://localhost
DB_CONNECTION=mysql
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DB_DATABASE=mydatabase
_=/usr/bin/env
PWD=/var/www/html
DB_PASSWORD=root
APP_DEBUG=true
APP_KEY=base64:C1IQl08HeaUSPfahtrZLL1lL81n3ELMmJd9Tkli6CtA=
DB_USERNAME=root
SHLVL=6
HOME=/root
LOG_CHANNEL=file
docker-compose.yml
version: '1'
services:
web:
build:
context: ./
working_dir: /var/www/html
ports:
- 8080:80
volumes:
- ./:/var/www/html
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DB_HOST=127.0.0.1
- HOSTNAME=b2d4219c8143
- DB_DATABASE=mydatabase
- PWD=/var/www/html
- DB_PASSWORD=root
- SHLVL=3
- HOME=/root
- DB_USERNAME=root
- LOG_CHANNEL=file
- DB_CONNECTION=mysql
- APP_NAME=fes
- APP_ENV=local
- APP_KEY=base64:C1IQl08HeaUSPfahtrZLL1lL81n3ELMmJd9Tkli6CtA=
- APP_DEBUG=true
- APP_URL=http://localhost
Dockerfile
FROM nginx:latest
RUN apt-get update && apt-get install -y php-gd
RUN apt-get -y install php7.2-zip
COPY entrypointcust.sh /entrypointcust.sh
RUN chmod +x /entrypointcust.sh
EXPOSE 80
我在虚拟机上的ipv4地址
10.0.2.15
关于为什么我无法连接到数据库的任何建议?
.env文件中的 DB_HOST=localhost
也不起作用。