Anonymous
Но уже претерпел некоторые изменения, в прочем на результате они никак не сказались
🦠
В плане?
За пять дней либо кого достанет своим нытьем и тот ему сделает
🦠
Либо бросит затею
Alexandr
ko4
пароль бы ещё замазать
Anonymous
В плане?
не обращай внимания на тролля, сам не шарит, только троллить и умеет
Anonymous
пароль бы ещё замазать
Да пофиг, он не будет в конечном результате
Alexandr
Либо бросит затею
Ну пусть пробует, лишний опыт будет
Anonymous
А в dockerfile почему такие манипуляции не сделаешь?
Что именно? Мускуль не инициализирую?
Alexandr
Что именно? Мускуль не инициализирую?
Выставление прав и так далее
Alexandr
Ты же ведь настаиваешь один контейнер, зачем это все нести в compose?
Anonymous
Например, потому что на момент отработки докерфайла ещё нет каталога с базой, прокинутого в докер
Alexandr
Например, потому что на момент отработки докерфайла ещё нет каталога с базой, прокинутого в докер
Так если права выставить на директорию и запускать под mysql user, ничего более не понадобится
Anonymous
через sudo?
Anonymous
Уже пытался, толку не дало
Anonymous
ты не докеру учишься
Лучше по делу писать, а не тралить
🦠
Лол
Etki
я там выше писал уже. не работает - дебажь и построчно выясняй, где именно проблема. иначе не бывает.
🦠
Пошло обоссывание помощников
Etki
и это, в общем, по делу на самом деле. это основы линукса, а не докер
Etki
да нет же
Anonymous
Подскажи тогда как правильно дебажить этот момент
Etki
если у тебя нет в выводе ls и ты не шаманил с stdout/stderr - значит он у тебя просто не вызывается
Anonymous
если у тебя нет в выводе ls и ты не шаманил с stdout/stderr - значит он у тебя просто не вызывается
не шаманил же. и как одна команда в скрипте вызывается, а другая нет?
Etki
поэтому тупо напихай echo во все ветки if else, чтобы понимать, что у тебя выполняется, либо -x включи
Etki
ну, дружище, скрипт твой, не могу сказать
Anonymous
Вот как он сейчас выглядит, ни один из двух Ls не выводится
Etki
у тебя стоит -e, как я предлагал выше. это флаг баша "закончи работу на первой ошибке". если у тебя по каким-то причинам не прошел первый chown, то умрет весь скрипт.
Etki
поэтому я повторно спрошу - от какого пользователя все выполняется?
Etki
существует ли пользователь mysql с группой mysql?
Anonymous
В докере, конечно существует.
Alexandr
через sudo?
какой еще sudo? Что тебе мешает выставить настройки для директории в dockerfile и потом создать volume?
Anonymous
Более того, после всего этого, в логах я вижу, что выполнялся и запуск демона мускуля, который выругался, что права на mysql.index не верные стоят
Anonymous
какой еще sudo? Что тебе мешает выставить настройки для директории в dockerfile и потом создать volume?
Ты же сказал запускать от мускуля, как это сделать? Всё же от рута там отрабатывает
Etki
а что в выводе-то
Alexandr
почему тогда на права ругается
Anonymous
почему тогда на права ругается
Потому что оказывается, что всё что создал скрипт инициализации мускуля, под рутом
Etki
короч, докерфайл и stdout целиком без перенаправлений
Etki
иначе тут только угадывать можно
Etki
и ради всего святого, не скриншотами
Alexandr
и ради всего святого, не скриншотами
скажи спасибо что не с телефона
Etki
еще есть замечательный хак - прежде чем делать докерфайл - запустить базовое изображение и просто руками выполнить все команды, чтобы отдебажить живьем
Cin
а почему изображение, а не образ?
Anton
Я правильно понимаю что проблема в том что во время запуска компоуза база не инициализирована?
Etki
нет, человек хочет вручную пройти круги ада ради самообучения
Anton
знать как работают linux безусловно полезно
Cin
ну никакой побольшому счету, просто немного сбивает
Alexandr
Он сразу падает же
у тебя явно идет расхождение с правами на директорию и тем кто процесс запускает. Как выше посоветовали лучше ручками все проделай
Anonymous
Я правильно понимаю что проблема в том что во время запуска компоуза база не инициализирована?
Я скриптом инициализирую, но потом при запуске демона облом, потому что права на эту инициалищированную базу оказываются рутовые, а не мускульные
Anton
скрипт должен лежать/копироваться в том же контейнере что и сам мускул, ну и соответственно запускать его сразу под пользователем mysql
Anonymous
Да, скрипт запускается в самом конце из композа
Anton
по факту я бы просто вот сюда https://github.com/docker-library/mysql/blob/master/8.0/Dockerfile добавил добавил COPY mysuperscript
Anton
нет
Anton
компоуз это уэе работа в проде
Anton
а скрипт это этап перед компоузом
Anton
его надо рручками либо чем то другим запускать
Anton
не надо пытаться его интегрировать в компоуз. хотя я делал так , запускал такой скрипт и по окончании делал touch migrated
Anton
и потом проерял каждый раз - если такого файла нет - заново запускаю инициализацию
Anonymous
Вот же композ
Anonymous
drupal: build: . ports: - "80:80" - "3306:3306" volumes: - ./config/my.cnf:/etc/my.cnf - ./files/www/drupal:/var/www/drupal - ./mysql-data:/var/lib/mysql - /tmp/kziodb.sql:/kziodb.sql working_dir: /var/www command: sh -c "/init.sh >> /var/lib/mysql/d.log 2>&1" restart: on-failure 1
Anonymous
А на скрине выше тот самый init.sh
Anton
энет.
Anton
my.cnf никакого отношение к контейнеру с друпалом не имеет
Anton
у тебя есть контейнер с мускулом
Anton
вот туда и копируй
Anonymous
тем не менее с my.cnf щас уже всё нормально
Anton
и там же делай init (если ему никакой код друпаловский не нужен)
Anonymous
А вот с init.sh шляпа
Anonymous
И не надо снова заводить сказочку про белого бычка и про то что одно приложение в одном контэйнере
Cin
да хоть 5
Anonymous
Я щас чисто с мускулем разбираюсь
Anonymous
И всё в одном контейнере