首页 > 解决方案 > Docker LAMP 镜像 mysql 连接问题

问题描述

我试图创建 docker LAMP 堆栈映像并遇到一些与数据库连接有关的问题。运行容器后,我可以在本地主机上点击静态页面,告诉我实际图像很好,但我不知道为什么数据库没有连接。我正在使用 aws db,它在我的本地灯环境中运行良好。但是 contianer 图像有问题。

Dockerfile

# Build ui code
FROM node:8.11.4 AS npm-build
COPY code/ui /tmp/code/ui
WORKDIR /tmp/code/ui
RUN npm install bower
RUN npm install && npm run build

# Build api code
FROM sunfoxcz/php-build:5.6 AS php-build
COPY code/api /tmp/code/api
WORKDIR /tmp/code/api
RUN composer install && composer dump-autoload -o 

# Build production container
FROM amazonlinux:1

# Update repo data
RUN yum makecache fast

# Install OS updates
RUN yum update -y \
    && yum-config-manager --enable epel

# Install Apache (2.4) and PHP (5.6)
RUN yum install -y httpd24 mod24_ssl php56 php56-mysqlnd php56-pgsql php-curl php56-mbstring php56-gd php56-devel php56-mcrypt php56-opcache

# Install needed packages
RUN yum install -y redis poppler-utils

# Install needed dev tools
RUN yum install -y gcc wget

# Install PHP Redis extension
RUN cd /tmp && \
    wget -O phpredis-4.3.0.tar.gz https://github.com/phpredis/phpredis/archive/4.3.0.tar.gz && \
    tar xvfz phpredis-4.3.0.tar.gz && \
    cd phpredis-4.3.0 && \
    phpize && \
    ./configure && \
    make && \
    make install && \
    rm -rf /tmp/phpredis-4.3.0*

# Install needed binaries
COPY bin/pdftotext /opt/ds/bin/pdftotext
RUN chmod +x /opt/ds/bin/pdftotext


# Finally add our code files to the production container
COPY --from=php-build /tmp/code/api /var/www/html
COPY --from=npm-build /tmp/code/ui/dist /var/www/html/ui

COPY environment /etc/environment

EXPOSE 80
EXPOSE 3306

ENTRYPOINT ["httpd","-DFOREGROUND"]

环境

export DS_ENVIRONMENT="local"
export DS_DB_HOST="my-remote-host"
export DS_DB_HOST_REPLICA=""
export DS_DB_HOST_REPLICA_TWO=""
export DS_DB_NAME="my_db_name"
export DS_DB_USER="db_user"
export DS_DB_PASS="xxxxxxx"

当我运行此容器时,出现以下错误:

致命错误:在 /var/www/html/vendor/illuminate/database/Connectors/Connector.php:68 中带有消息“SQLSTATE[HY000] [2002] No such file or directory”的未捕获异常“PDOException” 堆栈跟踪:#0 /var/www/html/vendor/illuminate/database/Connectors/Connector.php(68): PDO->__construct('mysql:host=loca...', 'root', 'root', Array) #1 /var/www/html/vendor/illuminate/database/Connectors/Connector.php(45): Illuminate\Database\Connectors\Connector->createPdoConnection('mysql:host=loca...', 'root', 'root ', Array) #2 /var/www/html/vendor/illuminate/database/Connectors/MySqlConnector.php(24): Illuminate\Database\Connectors\Connector->createConnection('mysql:host=loca...',数组,数组)#3 /var/www/html/vendor/illuminate/database/Connectors/ConnectionFactory.php(183):Illuminate\Database\Connectors\MySqlConnector->connect(Array) #4 [内部函数]: Illuminate\Database\Connectors\ConnectionFactory->Illuminate\Database\Connectors{closure}() #5 /var/www/html/vendor/ Illuminate/database/Connection.php(883): call_user_func(Object(C in /var/www/html/vendor/illuminate/database/Connectors/Connector.php 在第 68 行

我似乎无法确定这是从哪里来的。显然看起来像一个 db 连接问题,但 1)我不明白为什么它使用图像中看到的 localhost 连接字符串。这是默认的吗?

标签: mysqldockerilluminate-container

解决方案


推荐阅读