Только начала пользоваться Docker. Не могу понять почему не работает MySQL. Очень нужна помощь.
файл .yml
version: '2'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
- "344:344"
volumes:
- ./hosts:/etc/nginx/conf.d
- ./www:/var/www
- ./logs:/var/log/nginx
links:
- php
php:
build: ./images/php
links:
- mysql
volumes:
- ./www:/var/www
mysql:
image: mysql:5.7
ports:
- "3306:3306"
volumes:
- ./init.sql:/mysql/init.sql
environment:
MYSQL_ROOT_PASSWORD: polinanov_avito
MYSQL_DATABASE: polinanov_avito
MYSQL_USER: polinanov_avito
MYSQL_PASSWORD: polinanov_avito
networks:
- wp-net
networks:
wp-net:
driver: bridge
Функция подключения к базе данных
$link = mysqli_connect(
'mysql',
'polinanov_avito',
'polinanov_avito',
'polinanov_avito');
Dockerfile:
FROM php:7.1-fpm
MAINTAINER Polina <ms.polinanov@mail.ru>
RUN apt-get update && apt-get install -y\
curl \
wget \
git \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
&& docker-php-ext-install -j$(nproc) iconv mcrypt mbstring mysqli pdo_mysql zip \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
ADD php.ini /usr/local/etc/php/conf.d/40-custom.ini
WORKDIR /var/www
CMD ["php-fpm"]
Ошибки при попытке вызова функции:
<b>Warning</b>: mysqli_connect(): php_network_getaddresses: getaddrinfo failed: Name or service not known in <b>/var/www/hello.dev/classApi.php</b> on line <b>93</b><br />
<br />
<b>Warning</b>: mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in <b>/var/www/hello.dev/classApi.php</b> on line <b>93</b><br />
"Internal Error BD"
php_network_getaddresses: getaddrinfo failed: Name or service not known in ...
Backend не может подключиться к mysql
.
php:
links:
- mysql
mysql:
networks:
- wp-net
Почему? Не связаны одной сетью. Советую использовать api версии не старее 3.0.
version: 3.0
services:
php:
networks:
- net
environment:
- MYSQL_HOST=mysql.example_net
- MYSQL_PORT=3306
- MYSQL_ROOT_PASSWORD: polinanov_avito
- MYSQL_DATABASE: polinanov_avito
- MYSQL_USER: polinanov_avito
- MYSQL_PASSWORD: polinanov_avito
mysql:
networks:
- net
networks:
- net # bridge by default
Почему версию 3.0?
В ней для связи ипользуются dns нотация.
К примеру для mysql
- mysql.project_path_net:3306
. Можно менять название проекта через env переменную COMPOSE_PROJECT_NAME=test
в .env
файле -> mysql.test_net:3306
.
Для коннекта к базе используем переменные окружения, а не харкодим их.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У клиента есть сайт который размещен на платном хостингеКак мне подключиться к БД сайта удаленно через OS Panel? Есть все доступы к БД и к личному...
Есть сайт вопросов и ответов, в нём, в конце списка вопросов, повесил кнопку "Показать еще" (вопросы)Эта кнопка передает ajax запросом в php скрипт,...
Создал бота Telegram, который по нажатию на кнопки выводит заданные результате по командам: /help /test и тд