Docker LAMP image Проблемы с подключением к MySQL - PullRequest
0 голосов
/ 28 сентября 2019

Я пытаюсь создать образ стека 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"

Когда я запускаю этот контейнер, я получаю следующую ошибку:

Неустранимая ошибка: Uncaughtисключение «PDOException» с сообщением «SQLSTATE [HY000] [2002] Нет такого файла или каталога» в /var/www/html/vendor/illuminate/database/Connectors/Connector.php:68 трассировка стека: # 0 / var / www/html/vendor/illuminate/database/Connectors/Connector.php(68): PDO -> конструкция __ («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 ...', Array, Array)# 3 /var/www/html/vendor/illuminate/database/Connectors/ConnectionFactory.php(183): Подсветка \ Database \ Connectors \ MySqlConnector-> connect (Array) # 4 [внутренняя функция]: Подсветка \ База данных \ Соединители \ ConnectionFactory-> Подсветка \ База данных \ Коннекторы {закрытие} () # 5 /var/www/html/vendor/illuminate/database/Connection.php(883): call_user_func (Объект (C в / var)/www/html/vendor/illuminate/database/Connectors/Connector.php в строке 68

Я не могу определить, откуда это исходит.Очевидно, что это похоже на связь с БД isuees, но 1) я не понимаю, почему он использует строку подключения localhost, как видно на рисунке.Это по умолчанию?

...