Artem
Докер в состоянии рестарта зависает и не залить базу в мускуль
Ну видимо задал ему политику рестарта при падении, что docker logs говорит?
Anonymous
Ну видимо задал ему политику рестарта при падении, что docker logs говорит?
Посмотрел логи мускуля, он тупо падает из-за не верных прав на файл .index
Anonymous
Как видно из скрина, сразу после инициализации, я выставляю нужные права...
Etki
как видно из скрина, ты их выставляешь при отсутствии директории /var/lib/mysql/mysql, которая, судя по тому же скрину, еще как на месте
Anonymous
Из чего следует, что она отсуствует?
Etki
! -d это же проверка на то, что проверяемый ресурс не директория, нет?
Etki
если то что слева маунтится в /var/lib/mysql, то у тебя ничего не выполняется. если это не так, то довольно сложно понять твой сетап
Anonymous
Да, это дира служебной базы mysql, которая пояавляется после инициализации тремя строками ниже
Anonymous
/var/lib/mysql != /var/lib/mysql/mysql
Etki
то, что слева, у тебя маунтится в /var/lib/mysql?
Anonymous
Да
Etki
поэтому директория mysql слева у тебя окажется по адресу /var/lib/mysql/mysql
Anonymous
Нет
Etki
и еще ты не указываешь ключ рекурсивности для chown
Etki
another case solved
Anonymous
Она пустая же к моменту запуска, потом после иницализации там появляется всё что видно слева
Etki
а не, в нижнем есть. тогда не знаю, зачем два chown
Anonymous
Это попытка наобум пофиксить
Etki
если ты маунтишь то, что слева, то она не пустая
Anonymous
Я её чищу специально
Anonymous
отдельно руками перед первым запуском
Anonymous
И тогда срабатывает if в скрипте справа и инициализирует всё что нужно мускулю, а после этого, почему=то там оказываются другие права...
Etki
поставь set -eu в начале скрипта и выводи ls после всех операций с /var/lib/mysql. оно у тебя не все вместе от пользователя mysql выполняется?
Anonymous
А не set -x?
Etki
-x тоже полезно, это вывод всего, что будет выполняться
Etki
-eu тебе просто уронит скрипт в том месте, где не сможет выполниться или (для профилактики) не найдет переменную
Etki
сейчас ты просто не знаешь, отработал ли chown вообще в принципе
Etki
и в чем фатальный недостаток привычного изображения из библиотеки?
Anonymous
поставь set -eu в начале скрипта и выводи ls после всех операций с /var/lib/mysql. оно у тебя не все вместе от пользователя mysql выполняется?
Не помогает же, скрипт внутри докера и аутпут же не транслируется похоже наржу из докера, потому как всё точно так же
Etki
все транслируется, если ты с stdout/stderr не шаманил
Anonymous
не вижу в выводе, только вывод команды mysqld_safe
Anonymous
cat /var/lib/mysql/*.err В скрипте так же не выводит ничего
Anonymous
Сделаю вывод в файл command: sh /init.sh >> /var/lib/mysql/d.log
Anonymous
Вот ведь незадача. Не появляется файл d.log....
Etki
так а с обычным изображением mysql какие препоны?
Anonymous
Каким изображением?
Etki
https://hub.docker.com/_/mysql/
Anonymous
Я уже писал вчера, что хочу сам сделать образ, а не пользоваться готовым
Anonymous
Что бы все грабли пройти самому.
Anonymous
Иначе так докеру и не научишься никогда
🦠
Anonymous
Вот так лог вывода появился command: sh -c "/init.sh >> /var/lib/mysql/d.log"
Anonymous
Странно, но ни echo, ни cat из этого /init.sh не попадают в лог d.log
Alexandr
Странно, но ни echo, ни cat из этого /init.sh не попадают в лог d.log
Как ты в dockerfile пытаешься записать вывод работы скрипта?
🦠
Тсс, пусть развлекается
🦠
Через пару веков узнает про /dev/stderr
Anton
Шел третий день граблей
Knyage
Тсс, пусть развлекается
а вы знаете толк в извращениях, месье 😆
Anonymous
Как ты в dockerfile пытаешься записать вывод работы скрипта?
В докерфайле не пытаюсь, в docker-compose.yml же
Anonymous
Через пару веков узнает про /dev/stderr
не помогает перенаправление, умняшка ты наша
Anonymous
Вот так лог вывода появился command: sh -c "/init.sh >> /var/lib/mysql/d.log"
Alexandr
Вот так лог вывода появился command: sh -c "/init.sh >> /var/lib/mysql/d.log"
Из этого непонятно ничего, скинь весь файл
🦠
Тихо тихо
🦠
Он сам с ума
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
Alexandr
А зачем он?
Ну ты же пытаешься запустить скрипт
Alexandr
Не факт что в изначальном обращение есть sh
Anonymous
Ну ты же пытаешься запустить скрипт
Ну скрипт то запускается и в его шапке #!/bin/bash
Alexandr
А зачем он?
А вообще было бы отличной идеей запись в файл в самом скрипте указать
Alexandr
Как? В каждой строке скрипта?
Нет , через EOF например
Alexandr
Но вначале попробуй bin/bash
Anonymous
Anonymous
Но вначале попробуй bin/bash
Уже, ничего не изменилось, как и ожидалось
Alexandr
Уже, ничего не изменилось, как и ожидалось
В выхлопе ничего нету при запуске?
Anonymous
есть только d.log
Anonymous
и там даже нет результата команды ls
Anonymous
Вообще очередная шляпа какая-то у докера с stdin/stderr, наряду с файлами в вольюмах
Alexandr
http://unix.stackexchange.com/questions/300129/how-do-i-use-cat-eof
🦠
Ставлю на пять дней
Anonymous
http://unix.stackexchange.com/questions/300129/how-do-i-use-cat-eof
Так это обычный вывод текста в файл. А не результата выполнения команд
Anonymous
Почему права рутовые? Это не позволяет мускулю стартануть внутри докера.
Anonymous
Скрипт на скрине справа