php - 在ubuntu容器上添加mysql数据库

标签 php mysql apache ubuntu dockerfile

我想将我的 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 中的所有内容

最佳答案

首先您必须重新排序 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

关于php - 在ubuntu容器上添加mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58458245/

相关文章:

php - 如何在 Kohana 中使用 MongoDB?

php - 错误 1005 (HY000) : Can't create table 'db.POSTS' (errno: 150)

mysql - 查找表中不重复的行

php - 当PHP运行模块时,Apache无法启动

php - 阵列似乎在 7 项后停止

javascript - 将 HTML 表单数据加载和保存到 xml 文件的最佳方式?

php - 为什么我的脚本使用 PHP5 而不是 PHP7

php - undefined variable : records in C:\XAMPP\htdocs\display_prsc. php 第 29 行

php - 如何在 MAMP 的 php 版本上运行 composer?

mysql - 如何编写查询将数据分为相同 id 的部分