Добавить MySQL базы данных в Ubuntu контейнера - PullRequest
0 голосов
/ 19 октября 2019

Я хотел бы добавить свою базу данных mysql в мой Dockefile под управлением Ubuntu с установленными mysql и php. Папка структурирована следующим образом: папка | _ Dockerfile | _ start.sh | _ index.php | _ init.sql

проблема в том, что start.sh не выполняет весь мой код, поэтомуinit.sql не импортируется в mysql. Я посмотрел какое-то решение по StackOverflow, но никто из них не работал.

это Dockerfile

FROM ubuntu:latest
RUN apt-get update && apt-get upgrade -y
RUN DEBIAN_FRONTEND=noninteractive apt-get install apache2 php libapache2-mod-php php-mysql mysql-server -y 
VOLUME ["/var/lib/mysql"]
ADD init.sql /tmp/init.sql
COPY index.php /var/www/html/
COPY start.sh /bin/
RUN chmod +x /bin/start.sh
EXPOSE 80 3306
CMD "/bin/start.sh"

Это start.sh

#!/bin/bash

/usr/sbin/apache2ctl -D FOREGROUND
/usr/bin/mysqld_safe
mysql -u root -e "CREATE DATABASE mydb"
mysql -u root mydb < /tmp/init.sql

I 'я не уверен, что проблема именно в start.sh, в любом случае каждое решение для docker-compose будет для меня бесполезным, так как мне нужно все в Dockerfile

1 Ответ

0 голосов
/ 19 октября 2019

сначала вы должны изменить последовательность в вас start.sh, потому что apache на переднем плане не позволит вам запустить mysql.

#!/bin/bash
chown -R mysql:mysql /var/lib/mysql /var/run/mysqld && /etc/init.d/mysql start
while [ ! -e /var/run/mysqld/mysqld.sock ]
do
    sleep 2
done
mysqladmin ping

mysql -u root -e "CREATE DATABASE mydb"
mysql -u root mydb < /tmp/init.sql

/usr/sbin/apache2ctl -D FOREGROUND

, и вы должны изменить Dockerfile, добавив:

RUN mkdir /var/run/mysqld ; chown mysql.mysql /var/run/mysqld
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...