gpt4 book ai didi

php - Dockerfile 设置为使用 php 和 mysql 启动 wordpress 容器,改为启动 mariadb

转载 作者:行者123 更新时间:2023-11-29 15:43:49 25 4
gpt4 key购买 nike

所以我有一个运行 ubuntu 的 docker 服务器,并且我的本地环境(在 MacBook Pro 硬件和 OSX 上运行的 docker)在 2 天前运行良好。它有一个构建问题,所以我尝试重建,但现在我花了过去 12 个小时尝试构建它。在每个结果中,我得到的最接近的是它将启动服务器,但它将使用 MariaDB 而不是 MySQL 启动。这导致 WordPress 只是吐出“无法连接到数据库”错误。

这是图像滚动时日志的内容:

Step 6/10 : RUN find /var/lib/mysql -type f -exec touch {} \; && \
service mysql start && \
mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{redacted}');" && \
mysql -u root -pmysql -e "DROP DATABASE if exists theTable; DROP DATABASE if exists secondTable; CREATE DATABASE theTable; CREATE DATABASE secondTable;" && \
mysql -u root -pmysql theTable < /code/devdb/theTable.sql && \
---> Running in e1205f2fa886
Starting MariaDB database server: mysqld.

我认为问题在于几个月前升级到 php7.2,但我认为 dockerfile 从未更新过。我尝试使用最新的官方 php7.2-fpm 镜像,但 apache 命令抛出错误。所以我尝试了 php7.2-apache,但随后 php 抛出错误,提示“gd”未安装。但后来我尝试使用

添加它
apt-get install php7.2-xxx 

也尝试过使用

rm /etc/apt/preferences.d/no-debian-php && \
docker-php-ext-install {XXX}

然后我至少可以启动服务器

wordpress:php7.2-apache

mobingi/ubuntu-apache2-php7:7.2 

服务器启动,但它启动了一个 MariaDB 镜像!

我还让服务器开始使用

binhle410/php7.2-fpm

但是更奇怪的事情发生了,每个页面都只显示php代码。就像浏览器只是在每个页面上回显 header php 文件一样。

这是相关的 DockerFile:

FROM wordpress:php7.2-apache

RUN usermod -u 1000 www-data && \
apt-get -y update && apt-get -y upgrade && \
apt-get -y install default-mysql-server git && \
a2enmod expires && a2enmod headers && a2enmod rewrite && \
sed -i -e 's/None/All/g' /etc/apache2/apache2.conf && \
mkdir -p /var/www/html && \
curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer

RUN mkdir -p /code
COPY ./devdb /code/devdb

RUN find /var/lib/mysql -type f -exec touch {} \; && \
service mysql start && \
mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{redacted}');" && \
mysql -u root -pmysql -e "DROP DATABASE if exists theTable; DROP DATABASE if exists secondTable; CREATE DATABASE theTable; CREATE DATABASE secondTable;" && \
mysql -u root -pmysql theTable < /code/devdb/theTable.sql && \

和 docker-compose.yml

version: '3'
services:
web:
build: .
ports:
- "80:80"
volumes:
- ./src:/var/www/html
- ./:/code
- /var/lib/mysql
- ./tests:/var/www/html/tests
- ./vendor:/var/www/html/vendor
environment:
MYSQL_ROOT_PASSWORD: {redacted}
MYSQL_DATABASE: theTable
DOCKER_DEBUG: 1

我得到的结果是,当我运行 docker-compose up --build 时,它会后台处理服务器,但会启动 mariadb 而不是 mysql 数据库,而 wordpress 则无法链接到该数据库。 docker 镜像应该使用我拥有的 sql 文件而不是 mariadb 镜像来启动 mysql 服务器。

这是控制台输出的内容:

Step 6/10 : RUN find /var/lib/mysql -type f -exec touch {} \; && \
service mysql start && \
mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{redacted}');" && \
mysql -u root -pmysql -e "DROP DATABASE if exists theTable; DROP DATABASE if exists secondTable; CREATE DATABASE theTable; CREATE DATABASE secondTable;" && \
mysql -u root -pmysql theTable < /code/devdb/theTable.sql && \
---> Running in e1205f2fa886
Starting MariaDB database server: mysqld.

最佳答案

明白了,伙计们

FROM mobingi/ubuntu-apache2-php7:7.2

# disable interactive functions
ARG DEBIAN_FRONTEND=noninteractive​

RUN usermod -u 1000 www-data && \
apt-get -y update && apt-get -y upgrade && \
apt-get -y install curl zip unzip php7.2-zip mysql-server git && \
a2enmod expires && a2enmod headers && a2enmod rewrite && \
sed -i -e 's/None/All/g' /etc/apache2/apache2.conf && \
mkdir -p /var/www/html && \
curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer

RUN mkdir -p /code
COPY ./devdb /code/devdb
RUN find /var/lib/mysql -type f -exec touch {} \; && \
service mysql start && \
mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD({redacted});" && \
mysql -u root -pmysql -e "DROP DATABASE if exists theTable; DROP DATABASE if exists secondTable; CREATE DATABASE theTable; CREATE DATABASE secondTable;" && \
mysql -u root -pmysql theTable < /code/devdb/theTable.sql && \
mysql -u root -pmysql secondTable < /code/devdb/secondTable.sql
...

工作

关于php - Dockerfile 设置为使用 php 和 mysql 启动 wordpress 容器,改为启动 mariadb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57297548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com