若安装好了可以输入docker-compose --version
若可以看到docker-compose的版本则安装成功
将这些文件用一个docker_compose文件夹保存起来(其中的source.list后面会讲到,mysql_data只需要建一个空文件夹就好)
localhost/index.html
和localhost/index.php
验证是否成功查看html,这里因为中文会乱码,因此html中出现了奇怪的符号,原因目前还不清楚
查看php
在index.php文件中写下一下代码,并通过浏览器查看php文件
$servername = "mysql"; #注意这里要用自己自定义的Mysql的容器名
$username = "root";
$password = "tuffy1216"; #密码也可以直接使用yml中的变量名
try {
$conn = new PDO("mysql:host=$servername", $username, $password);
echo "连接成功";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
在index.php文件中写下一下代码,并通过浏览器查看php文件
$servername = "mysql";
$username = "root";
$password = "tuffy1216";
try {
$conn = new PDO("mysql:host=$servername", $username, $password);
echo "连接成功";
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "CREATE DATABASE wjjDB";
// 使用 exec() ,因为没有结果返回
$conn->exec($sql);
echo "数据库创建成功<br>";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
可以输入一下代码,查看数据库
在index.php文件中写下一下代码,并通过浏览器查看php文件
$servername = "mysql";
$username = "root";
$password = "tuffy1216";
$dbname="wjjDB"; #变量设置
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); #选择数据库
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 使用 sql 创建数据表
$sql = "CREATE TABLE student(
s_id INT(8) UNSIGNED PRIMARY KEY,
s_name VARCHAR(30) NOT NULL,
s_age INT DEFAULT NULL
)";
// 使用 exec() ,没有结果返回
$conn->exec($sql);
echo "数据表 student 创建成功";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
在index.php文件中写下一下代码,并通过浏览器查看php文件
<?php
$servername = "mysql";
$username = "root";
$password = "tuffy1216";
$dbname="wjjDB"; #变量设置
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 开始事务
$conn->beginTransaction();
// SQL 语句
$conn->exec("INSERT INTO student (s_id,s_name,s_age)
VALUES (031702537, ‘wjj‘,22)");
$conn->exec("INSERT INTO student (s_id,s_name,s_age)
VALUES (031702538, ‘cgh‘,22)");
$conn->exec("INSERT INTO student (s_id,s_name,s_age)
VALUES (031702539, ‘lqy‘,22)");
// 提交事务
$conn->commit();
echo "新学生信息导入成功!";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
在index.php文件中写下一下代码,并通过浏览器查看php文件
<?php
$servername = "mysql";
$username = "root";
$password = "tuffy1216";
$dbname="wjjDB"; #变量设置
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 开始事务
$conn->beginTransaction();
// SQL UPDATE语句
$conn->exec("UPDATE student SET s_age=‘21‘ WHERE s_name=‘lqy‘");
// 提交事务
$conn->commit();
echo "记录修改成功!";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
通过前后对比可以看到,lqy的年龄变为了21
在index.php文件中写下一下代码,并通过浏览器查看php文件
<?php
$servername = "mysql";
$username = "root";
$password = "tuffy1216";
$dbname="wjjDB"; #变量设置
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 开始事务
$conn->beginTransaction();
// SQL DELETE语句
$conn->exec("DELETE FROM student where s_id=031702538");
// 提交事务
$conn->commit();
echo "031702538学生信息删除成功!";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
可以看到学号为031702538的学生记录被删除了
增加一段创建pymyadmin的代码
其内容为
#基础镜像
FROM phpmyadmin/phpmyadmin
#作者信息
MAINTAINER wjj
#声明暴露的端口
EXPOSE 8080
多亏了群里的大佬,利用还原的办法,使得php下载速度变快,并且不会超时,具体方法就是创建一个source.list文件,其内容为
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
并在dockerfile_php的run之前加一段COPY sources.list /etc/apt
一开始在这里卡了非常久的时间,总是不停重做,后来问了同学,才发现原来是我nginx的端口设置成1008,一般只要设置成80就可以
原因是我在增加pymyadmin文件内容时把,这段代码加在了文件末尾
phpmyadmin:
image: wjjphpmyadmin_image
container_name: wjjphpmyadmin
build:
context: .
dockerfile: dockerfile_phpmyadmin
ports:
- "8080:80" # phpmyadmin默认监听80
environment:
PMA_HOST: mysql #指定mysql服务所在的host
应该如前文所示加在nginx的前面
这次的作业我还是用了特别久的时间从下午2点做到晚上12点,我也是佩服我自己,主要时间都浪费在了index.html上,如果不是后来有同学帮助,我可能都很难完成这次作业,感谢大佬的帮助。
原文:https://www.cnblogs.com/J-J-1008/p/12836528.html