Вопрос немного не про Yii.
Крутится у меня pet проект с 2018 года, на простом сервере RAM 512 MB, Disc 10 GB, CPU 1*2 GHz.
Решил перевести наконец на докер его разработку.
Движок для полнотекстового поиска был Sphinx, перешел на его опенсорс наследника Manticore.
Купил новый виртуальный сервер.
Развернул докер, всё понялось успешно, ошибок в логах нет.
Но вот приложение по mysql протоколу подключаться не хочет. Ошибка SQLSTATE[HY000] [2002] Connection refused.
В чем дело так и не смог понять причину. Тот же самый докер, что и локально, те же самые порты, вертел и так и этак, вчера полдня убил. Степень злости зашкалила.
Думаю, ну и нафиг его этот сфинкс/мантикору, всё равно его конфигурация какая-то сильно сложная. Возьму что-то посовременнее по-быстрому прикручу.
Elasticsearch, установил локально, всё вроде работает, но стало вылетать с ошибкой из-за недостатка памяти.
manticore потребление памяти 61.89MiB
elasticsearch - 12.17GiB
Я охренел. Я прикинул сколько это денег нужно, чтобы это чудо работало на виртуальном сервере. И понял, что elastic подходит только для разрабов-богатеев ![]()
Помогите. Либо скиньте свою настройку мантикоры для docker и Yii2. Либо посоветуйте ресурсонетребовательную альтернативу.
Заранее спасибо
Докер как развёрнут? compose/swarm/k8s?
Elasticsearch дико прожорливый. Если всё влезает в Sphinx, лучше остаться на нём или мантикоре.
Привет. Compose
docker-compose.yml
manticore:
container_name: manticore
image: manticoresearch/manticore
environment:
- EXTRA=1
- CREATE_PLAIN_TABLES=1
restart: always
ports:
- 9308:9306
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
memlock:
soft: -1
hard: -1
volumes:
- ./:/var/www
- ./docker/manticore/data:/var/lib/manticore/data:rw
- "./docker/manticore/manticore-$ENV.conf:/etc/manticoresearch/manticore.conf:rw"
networks:
- default
depends_on:
- postgresql
Конфиг матикоры (за исключением лишних деталей):
source src_base
{
type = pgsql
sql_host = postgresql
sql_user = user
sql_pass = 111111
sql_db = db
sql_port = 5432
}
searchd
{
listen = 9312
listen = 9306:mysql41
log = /var/log/manticore/searchd.log
query_log = /var/log/manticore/query.log
pid_file = /var/run/manticore/searchd.pid
}
Yii2 конфигурация компонента:
'sphinx' => [
'class' => yii\sphinx\Connection::class,
'dsn' => 'mysql:host=manticore;port=9306;',
'username' => '',
'password' => '',
],
А приложение в том же docker-compose.yml?
Всё в одном docker-compose.yml
networks:
default:
services:
nginx:
container_name: nginx
image: nginx:latest
ports:
- 8099:80
volumes:
- ./:/var/www
- ./docker/nginx/vhost.conf:/etc/nginx/conf.d/default.conf
networks:
- default
depends_on:
- php
php:
container_name: php
build:
dockerfile: "./docker/php/Dockerfile-$ENV"
context: ./
volumes:
- ./:/var/www
- ./docker/php/php.ini:/usr/local/etc/php/conf.d/php.ini
networks:
- default
depends_on:
- postgresql
postgresql:
container_name: postgresql
restart: always
image: postgres:17.2-alpine
volumes:
- ./:/var/www
- ./docker/postgres/data:/var/lib/postgresql/data:rw
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
PGDATA: /var/lib/postgresql/data/pgdata
ports:
- "5444:5432"
networks:
- default
manticore:
container_name: manticore
image: manticoresearch/manticore
environment:
- EXTRA=1
- CREATE_PLAIN_TABLES=1
restart: always
ports:
- 9308:9306
ulimits:
nproc: 65535
nofile:
soft: 65535
hard: 65535
memlock:
soft: -1
hard: -1
volumes:
- ./:/var/www
- ./docker/manticore/data:/var/lib/manticore/data:rw
- "./docker/manticore/manticore-$ENV.conf:/etc/manticoresearch/manticore.conf:rw"
networks:
- default
depends_on:
- postgresql
- А к 9380 порту тоже не удаётся сторонним клиентом?
- Сервис manticore сам работает?
- Что если вообще не указывать логин-пароль?
Добрый день, еще раз.
Добавил mysql клиент в docker-compose.yml:
mysql:
container_name: mysql
image: imega/mysql-client
networks:
- default
Локально выполняю:
sudo docker-compose run --rm mysql mysql -P9306 -hmanticore
Всё проходит отлично, попадаю в консоль mysql, выполняю запросы, красота.
На ноуте у меня старый docker-compose, на виртуальном сервере запускаю командой docker compose. Делаю тоже самое:
sudo docker compose run --rm mysql mysql -P9306 -hmanticore
Ответ:
ERROR 2002 (HY000): Can’t connect to MySQL server on ‘manticore’
Ради эксперимента убрал network. Сделал так:
mysql:
container_name: mysql
image: imega/mysql-client
Подключаюсь, ответ теперь:
ERROR 2005 (HY000): Unknown MySQL server host ‘manticore’
Т.е. получается в первом случае логин и пароль не подходят? а какой там логин и пароль, я без понятия.
Он же нигде не задается
Сама мантикора индексирует данные из постргреса. Вроде с ней всё ок, как будто бы.
Проблема точно не в yii-шном компоненте