172 похожих чатов

В докер сборке есть именованные php и mysql сервисы.

В конфигурации проекта я указываю hostname для MySQLi подключения. Подключение к БД происходит корректно, только если в качестве hostname указан непосредственный IP mysql контейнера. Если указать имя контейнера или алиас- то не работает. Почему только по IP контейнера работает? Это можно как то исправить? Или это вопросы не к докеру, а к фреймворку?

24 ответов

21 просмотр

Несите манифесты

EN- Автор вопроса
EN
Что это?

докерфайлы, docker-compose.yml, команды…

EN- Автор вопроса

mysql: image: mysql:8.0 container_name: mysql restart: always volumes: - ./Docker/mysql/data:/var/lib/mysql environment: MYSQL_DATABASE: cip MYSQL_ROOT_PASSWORD: password networks: php: aliases: - db php: build: context: . dockerfile: Docker/php/Dockerfile container_name: php restart: always volumes: - ./:/var/www/CIP depends_on: - mysql networks: - php Php dockerfile: FROM php:8.0-fpm RUN apt-get update && apt-get install -y zip \ && docker-php-ext-install pdo_mysql \ && docker-php-ext-install mysqli RUN apt-get install -y libicu-dev RUN docker-php-ext-install intl RUN docker-php-ext-configure intl # Get composer COPY --from=composer:2.0.8 /usr/bin/composer /usr/local/bin/composer CMD ["php-fpm"] COPY ./ /var/www/CIP ARG USER_ID=1000 ARG GROUP_ID=1000 RUN usermod -u $USER_ID www-data && \ groupmod -g $GROUP_ID www-data && \ chown -R www-data:www-data /var/www/CIP .env: #-------------------------------------------------------------------- # DATABASE #-------------------------------------------------------------------- database.default.hostname=db database.default.database=cip database.default.username=root database.default.password=password database.default.DBDriver=MySQLi

EN
mysql: image: mysql:8.0 container_name: m...

compose явно не полный

EN- Автор вопроса
Andrey
compose явно не полный

version: "3" networks: php: services: nginx: image: library/nginx:1.14-alpine container_name: nginx restart: always ports: - "60:80" volumes: - ./:/var/www/CIP - ./Docker/nginx/conf.d:/etc/nginx/conf.d - ./Docker/nginx/log:/var/log/nginx depends_on: - php - mysql networks: - php mysql: image: mysql:8.0 container_name: mysql restart: always volumes: - ./Docker/mysql/data:/var/lib/mysql environment: MYSQL_DATABASE: cip MYSQL_ROOT_PASSWORD: password networks: php: aliases: - db php: build: context: . dockerfile: Docker/php/Dockerfile container_name: php restart: always volumes: - ./:/var/www/CIP depends_on: - mysql networks: - php

EN- Автор вопроса
Константин
На mysql network не указан

networks: php: aliases: - db Это разве не сеть? Или в синтаксисе ошибка/и?

EN
networks: php: aliases: - ...

Да не, все по спецификации

EN
networks: php: aliases: - ...

Просмотрел, с телефона не удобно, извиняюсь. Пока чисто предположение что сеть просто не описана services: # ... networks: Php: name: php И не понял зачем aliases в сеть воткнута? Или у меня разметка съехала?

EN- Автор вопроса
EN
а где нужно указывать aliases?

Для чего ты хочешь указать алиас?

EN- Автор вопроса
Константин
Для чего ты хочешь указать алиас?

ну если по названию контейнера не работает, то думал может через алиас.

EN
ну если по названию контейнера не работает, то дум...

слушай, а скинь плз результаты docker inspect для них, вдруг там что. я просто в упор никаких ляпсусов не вижу

EN- Автор вопроса
EN
с сетью или без?

давай как было изначально, эта схема должна работать. заодно, скажи, на какой системе и как запускаешь докер

EN
ну если по названию контейнера не работает, то дум...

ну это однако links и оно выше должно быть, не внутри секции нетворкс

Ладно, а как именно не работает коннект по алиасу? Резолв не проходит, или таймаут, или как? Что если nslookup попробовать подергать? На бридже тцпдампом трафик половить

EN- Автор вопроса
Andrey
Ладно, а как именно не работает коннект по алиасу?...

при попытке накатить миграции получаю ошибку: Unable to connect to the database. Main connection [MySQLi]: php_network_getaddresses: getaddrinfo failed: Name or service not known

EN
при попытке накатить миграции получаю ошибку: Unab...

доступность самого имени проверял? ping или nslookup у тебя не коннектится пхп или вообще имя не резолвится?

EN- Автор вопроса
🅳🅼🅸 . 🅺 💻
доступность самого имени проверял? ping или nslook...

php контейнер пингует mysql. Сама БД работает напрямую через контейнер. Может какая то проблема во фреймворке. Хотя в методе подключения описано, что в качестве hostname может быть указано либо имя либо адрес.

EN
php контейнер пингует mysql. Сама БД работает напр...

Он у тебя раз дергает getaddrbyhost, то точно не ждёт только айпишника

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта