php - 将自定义 Docker 容器链接到 MySQL

标签 php mysql apache docker yii

我有一个自定义的 Apache2/PHP 容器,我想链接到我的 MySQL 容器。

两个容器都通过 Rancher 运行。

从 Apache2 容器创建图像的 Dockerfile 如下所示:

FROM ubuntu:latest

RUN apt-get update && apt-get -y upgrade && DEBIAN_FRONTEND=noninteractive apt-get -y install \
    apache2 php7.0 php7.0-mysql libapache2-mod-php7.0 curl lynx-cur libpng-dev curl libcurl4-openssl-dev

RUN docker-php-ext-install mysql mysqli pdo pdo_mysql gd curl

RUN a2enmod php7.0
RUN a2enmod rewrite

RUN service apache2 restart

这个容器运行一个 Yii 1 应用程序,它在一个常规的非 dockerized LAMP 堆栈上运行得很好。这个容器只是通过 Rancher 连接到一个常规的 mysql:latest 容器。我还有一个 phpmyadmin 容器,可以很好地连接到它。我检查了应该连接到 mysql 容器的用户的权限和密码 1000 次,它们似乎没问题。

然而,我总是得到一个 Yii CDbConnection 无法打开数据库连接。

我得到的错误(查看日志文件)如下:

SQLSTATE[HY000] [2002] No such file or directory

最佳答案

我发现了问题(不同事物的组合):

  • www-data 没有读/写权限
  • 图片已更改为 php:7.0-apache
  • 从 docker-php-ext-install 中删除了 mysql
  • 我发现我的配置文件不正确(它引用了 db-address localhost,它被设置为链接名称)

关于php - 将自定义 Docker 容器链接到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45773323/

相关文章:

django - 使用 Apache WSGI 通过 DJANGO_SETTINGS_MODULE 环境变量设置 Django 设置文件

android - 提示 : Apache Cordova and Android: Unable to instantiate activity ComponentInfo

apache - Magento Admin/Front Split 服务器 Redis 错误

php - 从用户获取 Facebook 个人资料图片(通过 Graph)——检测它是否为空白(即默认)图片?

php - MySQL - 按字母顺序排序,不包括 "The"

php - 页面加载时如何转到 history.back()?

mysql: 值可以是 "null",但不一定是 "specific_value"

mysql - 统计多外键表的记录(MySQL)

javascript - 在 Javascript 中访问数组

php - 尝试在 json 数组中搜索