我正在尝试使我的应用程序与docker一起使用,但是我无法显示数据库。看来我的laravel应用程序本身可以访问它,但我需要自己访问它才能解决问题。
当我尝试访问localhost:4306(数据库所在的端口)时出现问题。当我在浏览器中转到它时,输出:
J���
5.7.22�
���X5g ^A�яя�яБ����������8O?x
tdm�mysql_native_password���я„Got packets out of order
.env的db部分是:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
docker-compose是:
version: '3.2'
networks:
laravel:
services:
nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "8088:80"
volumes:
- ./src:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- mysql
networks:
- laravel
mysql:
image: mysql:5.7.22
container_name: mysql
restart: unless-stopped
tty: true
ports:
- "4306:3306"
volumes:
- ./mysql:/var/lib/mysql
environment:
MYSQL_DATABASE: homestead
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: secret
SERVICE_TAGS: dev
SERVICE_NAME: mysql
networks:
- laravel
php:
build:
context: .
dockerfile: Dockerfile
container_name: php
volumes:
- ./src:/var/www/html
ports:
- "9000:9000"
networks:
- laravel
,并且docker-compose.yml中引用的Dockerfile是:
FROM php:7.4-fpm-alpine
# Setup GD extension
RUN apk add --no-cache \
freetype \
libjpeg-turbo \
libpng \
freetype-dev \
libjpeg-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd \
--with-freetype=/usr/include/ \
# --with-png=/usr/include/ \ # No longer necessary as of 7.4; https://github.com/docker-library/php/pull/910#issuecomment-559383597
--with-jpeg=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-enable gd \
&& apk del --no-cache \
freetype-dev \
libjpeg-turbo-dev \
libpng-dev \
&& rm -rf /tmp/*
RUN docker-php-ext-install pdo pdo_mysql
RUN chown -R 1000:www-data /var/www/html
答案 0 :(得分:1)
您正试图通过HTTP协议连接到数据库,这就是为什么您收到该消息的原因。
您可以使用phpMyAdmin(Web客户端)或任何已安装的MySql客户端连接到MySql数据库。
Docker可以使用phpMyAdmin:https://hub.docker.com/r/phpmyadmin/phpmyadmin/
有许多可用的MySql客户端。只需在“我的最爱”搜索引擎中搜索“ mysql客户端”,然后输入操作系统的名称即可。