codeigniter (HY 000/2002):我是一个很棒的人,我的朋友,我的朋友,连接被拒绝

yebdmbv4  于 2022-12-07  发布在  其他
关注(0)|答案(4)|浏览(147)

我是docker/docker-compose的新手。我正在尝试连接2个容器,它们是CodeIgniter应用程序和MySQL。我似乎无法解决**'mysqli::真实的_connect():(HY 000/2002)的规定:连接拒绝'问题在我的网络应用程序。我能够ping从容器内到其他,反之亦然。
这是我的
docker-compose.yml**文件:

version: '3'

services:

  web:
    container_name: ciblog
    build: .
    links: 
      - db
    depends_on:
      - db
    ports:
      - '80:80'
    volumes: 
      - .:/var/www/html/

  db:
    container_name: mysql
    image: mysql:latest
    ports:
      - '3306:3306'
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
      MYSQL_USER: root
      MYSQL_DATABASE: ciblog
    volumes:
      - ./assets/sql/ciblog.sql:/docker-entrypoint-initdb.d/ciblog.sql

停靠文件

FROM php:7.0-apache
RUN apt-get update && \
    apt-get install -y libfreetype6-dev libjpeg62-turbo-dev && \
    docker-php-ext-install mysqli && \
    docker-php-ext-install mbstring && \
    docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/  &&  \
    docker-php-ext-install gd
RUN a2enmod rewrite
RUN service apache2 restart

下面是我的database.php配置:

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'dbport' => '3306',
    'hostname' => 'db',
    'username' => 'root',
    'password' => '',
    'database' => 'ciblog',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => FALSE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

有人能帮我找出问题吗?提前谢谢你。如果你想看文件,这里是我的GitHub资源库:https://github.com/josephsim/docker-ciblog

bq9c1y66

bq9c1y661#

在基于Docker合成的设置中,您可以使用服务的名称作为主机名。

'hostname' => 'db'

Networking in Compose对此进行了更详细的讨论。
Docker容器没有一致的IP地址,手动查找它们通常是没有用的。在现代的Docker中也不需要links:,删除该行不会有什么坏处。

lyfkaqu1

lyfkaqu12#

我已经设法解决了它。改变MySQL版本似乎工作。

image: mysql:5.7

来源:https://stackoverflow.com/a/50169745/12555817

zfciruhq

zfciruhq3#

在基于Docker合成的设置中,您可以使用服务的名称作为主机名。
'主机名' =〉'数据库'

vulvrdjw

vulvrdjw4#

如果您使用的是2.0.0版或更低版本的Docker,请使用image: mysql:5.7我修复了我的问题。

相关问题