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
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
🦠
Тсс, пусть развлекается
🦠
Через пару веков узнает про /dev/stderr
Anton
Шел третий день граблей
Anonymous
Alexandr
Anonymous
Вот так лог вывода появился
command: sh -c "/init.sh >> /var/lib/mysql/d.log"
Alexandr
🦠
Тихо тихо
🦠
Он сам с ума
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
🦠
Сходит
🦠
Почерк вагрантолога
Alexandr
Anonymous
Alexandr
А зачем он?
Ну ты же пытаешься запустить скрипт
Alexandr
Не факт что в изначальном обращение есть sh
Alexandr
А зачем он?
А вообще было бы отличной идеей запись в файл в самом скрипте указать
Anonymous
Alexandr
Alexandr
Но вначале попробуй bin/bash
Anonymous
Alexandr
Anonymous
есть только d.log
Anonymous
и там даже нет результата команды ls
Anonymous
Вообще очередная шляпа какая-то у докера с stdin/stderr, наряду с файлами в вольюмах
Alexandr
http://unix.stackexchange.com/questions/300129/how-do-i-use-cat-eof
🦠
Ставлю на пять дней
Alexandr
Alexandr
Anonymous
Почему права рутовые? Это не позволяет мускулю стартануть внутри докера.
Anonymous
Скрипт на скрине справа