You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Laravel+MariaDB时数据库连接拒绝问题求助

Laravel应用无法访问Docker编排的MariaDB数据库

我采用Laravel + MariaDB + phpMyAdmin技术栈部署应用,通过Dockerfile构建应用镜像,使用docker-compose将所有服务编排到同一网络中,通过.env文件定义环境变量配置端口与密码。

目前遇到的问题:应用无法访问数据库,但查看所有容器日志均未发现错误;远程连接数据库可成功,容器间ping连通,甚至在应用容器内部直接连接数据库也能成功。

以下是相关配置文件:

.env

DB_CONNECTION=mysql
DB_HOST=database
DB_PORT=3307
DB_DATABASE=mysql
DB_USERNAME=root
DB_PASSWORD=
DB_ADMIN_PORT=8086

docker-compose.yml

version: '3'
services:
  app:
    build:
      context: .
      target: ${APP_ENV}
      dockerfile: Dockerfile
    container_name: app
    ports:
      - "${APP_PORT}:80"
    volumes:
    - /user/dir:/var/www/html
    env_file:
      - .env
    networks:
      - name_network
    depends_on:
      - database

  database:
    image: mariadb:10.5.6
    container_name: appdb
    ports:
      - "${DB_PORT}:3306"
    environment:
      MYSQL_DATABASE: mysql
      MYSQL_USER: root
      MYSQL_ALLOW_EMPTY_PASSWORD: 1
    volumes:
      - db_data:/var/lib/mysql
    env_file:
      - .env
    networks:
      - name_network

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    ports:
      - "${DB_ADMIN_PORT}:80"
    environment:
      PMA_HOST: database
      PMA_PORT: ${DB_PORT}
    env_file:
      - .env
    networks:
      - name_network

networks:
  networks:
  name_network:
    driver: bridge

volumes:
  db_data:

Dockerfile

FROM php:8.2.4-apache AS production

ENV COMPOSER_ALLOW_SUPERUSER=1

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    zip \
    unzip

RUN a2enmod rewrite

RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql

COPY . /var/www/html
RUN chown -R www-data:www-data storage
RUN chown -R $USER:www-data /var/www/html/storage/

RUN composer clear-cache
RUN composer install --no-dev --ignore-platform-req=ext-zip --no-scripts

#RUN php artisan config:cache

EXPOSE 8085
CMD ["apache2-foreground"]

database.php(Laravel配置文件片段)

'mysql' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', 'database'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'mysql'),
    'username' => env('DB_USERNAME', 'root'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],

内容的提问来源于stack exchange,提问作者Jonathan Rendón

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:37:37