2

我知道这是 this 的副本但是由于从未回答过,因此我重新发布了此问题。

我正在尝试建立 php-apache 和 mysql 容器的基本连接。

docker-compose.yml

version: '3.1'

services: 
  php:
    build: 
      context: .
      dockerfile: Dockerfile
    ports: 
      - 80:80
    volumes: 
      - ./src:/var/www/html
  
  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    # Exposing the ports doesn't help either
    # ports:
    #   - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: example

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

Dockerfile

FROM php:7.2-apache
RUN docker-php-ext-install mysqli

我运行一个简单的docker-compose up命令,然后在localhost:8080.
然而,尽管使用了默认的登录信息,即

server: db  
username: root
password: example

我得到错误SQLSTATE[HY000] [2002] Connection refused

截屏:
在此处输入图像描述

我认为这个问题可能是我本地机器上的一些配置问题,因为我也不能使用其他人制作的基于 docker 的 LAMP 堆栈。

非常感谢任何帮助,
谢谢!

4

1 回答 1

1

原来耐心就是答案。
如果我等待的时间足够长(大约 4.5 分钟),mysql 容器会发出一个小的日志详细信息。

db_1       | 2021-03-09T08:21:03.882088Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.23'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

之后登录工作。

注意:记录了类似的行,但与端口 0 相关,即 3306。在失败后立即尝试失败。
必须等待端口为 3306 的线路。

如果你们中的任何人可以就如何使我的 mysql 容器更快地初始化给我反馈或建议,
我将不胜感激。

于 2021-03-09T08:34:25.643 回答