我是 docker 的新手,我正在尝试遵循以下 tutorial。
将 MySQL 添加到 docker 后,PHP 服务未启动。 Dockefile 有 mysqli。我在 WSL 上本地运行它。我上网查了一下,找到了解决办法。
我从 docker-logs 得到以下输出:
>/mnt/c/dev/docker-php$ docker logs 2bc9871bed18
Hello from the docker yooooo container
Fatal error: Uncaught Error: Class 'mysqli' not found in /var/www/html/index.php:5
Stack trace:
#0 {main}
thrown in /var/www/html/index.php on line 5
Hello from the docker yooooo container
Fatal error: Uncaught Error: Class 'mysqli' not found in /var/www/html/index.php:5
Stack trace:
#0 {main}
thrown in /var/www/html/index.php on line 5
Dockerfile:
FROM php:7.4-apache
# COPY ./src /var/www/html
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
docker-compose.yml
# Use root/example user/password credentials
version: '3.1'
services:
php:
build:
context: .
dockerfile: Dockerfile
working_dir: /var/www/html/
ports:
- 80:80
volumes:
- ./src:/var/www/html/
depends_on:
- db
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
adminer:
image: adminer
restart: always
ports:
- 8080:8080
index.php
<?php
echo "Hello from the docker yooooo container";
$mysqli = new mysqli("db", "root", "example", "company1");
$sql = "INSERT INTO users (name, fav_color) VALUES('Lil Sneazy', 'Yellow')";
$result = $mysqli->query($sql);
$sql = "INSERT INTO users (name, fav_color) VALUES('Nick Jonas', 'Brown')";
$result = $mysqli->query($sql);
$sql = "INSERT INTO users (name, fav_color) VALUES('Maroon 5', 'Maroon')";
$result = $mysqli->query($sql);
$sql = "INSERT INTO users (name, fav_color) VALUES('Tommy Baker', '043A2B')";
$result = $mysqli->query($sql);
$sql = 'SELECT * FROM users';
if ($result = $mysqli->query($sql)) {
while ($data = $result->fetch_object()) {
$users[] = $data;
}
}
foreach ($users as $user) {
echo "<br>";
echo $user->name . " " . $user->fav_color;
echo "<br>";
}
答案 0 :(得分:0)
和新手一样,我的问题有一个简单的解决方案。我不得不重建容器,它工作得很好:
import pkg_resources
import requests
for package in pkg_resources.working_set:
(package_name, package_version) = str(package).split(' ')
url = "https://pypi.org/project/{}/{}/".format(package_name, package_version)
response = requests.get(url)
# TODO find release date with re / beautiful soup / etree etc.
package_date = 'TODO extract release date from response.text with re / beautifulsoup / etree etc.'
print ("{} ({}): {}".format(package_name, package_version, package_date))