Отредактировано
С официальным изображением MariaDB нужно просто скопировать скрипт инициализации (initdb.sql
) в каталог /docker-entrypoint-initdb.d
.См. Краткое руководство по MariaDB Docker .Файлы в этом каталоге выполняются в алфавитном порядке при создании и инициализации контейнера.
С образом XAMPP кажется, что вы должны сделать это вручную.Это определенно не элегантное решение, но оно должно работать.
Замените ENTRYPOINT
скрипт изображения на этот:
#!/bin/bash
/opt/lampp/lampp start
# wait for mysql to be ready
while ! /opt/lampp/bin//mysql --protocol TCP -e "show databases;"; do sleep 2; done
# initialize the database
/opt/lampp/bin/mysql -u root -e "source /init.sql"
## Run tail so we don't exit
/usr/bin/tail -f /opt/lampp/logs/php_error_log
Это будет ждать, пока mysql
будет готовперед выполнением команды source
.
Добавьте к Dockerfile
следующее, чтобы скопировать сценарий инициализации sql и переопределить ENTRYPOINT
:
FROM cswl/xampp
...
COPY init.sql /init.sql
COPY init.sh /init.sh
RUN chmod +x /init.sh
ENTRYPOINT ["/init.sh"]