【问题标题】:Add mysql DB on ubuntu container在 ubuntu 容器上添加 mysql 数据库
【发布时间】:2019-10-18 21:09:29
【问题描述】:

我想将我的 mysql 数据库添加到运行 ubuntu 并安装了 mysql 和 php 的 Dockefile。该文件夹的结构如下: 文件夹 |_ Dockerfile |_ 开始.sh |_ 索引.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

我不确定问题出在 start.sh 上,反正每个 docker-compose 解决方案对我来说都是无用的,因为我需要 Dockerfile 中的所有内容

【问题讨论】:

    标签: php mysql apache ubuntu dockerfile


    【解决方案1】:

    首先你必须在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
    

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 2020-04-07
      • 2021-08-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      • 2017-01-15
      • 2014-06-05
      相关资源
      最近更新 更多