docker 部署PHP网页

docker 部署PHP网页

准备好两个镜像

docker 部署PHP网页_第1张图片

然后创建两个容器:

docker  run --name="apachedemo"  -p 80:80   -d  nimmis/apache-php5

docker run --name mysqldemo -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest

docker ps 查看两个容器的状态,如果docker ps 没有说明容器没有起来。

docker ps 默认查看的是正在运行的容器。

1573869877813

然后在游览器输入docker 宿主机的ip;docker 安装环境的ip;

(比如:虚拟机里面安装Linux,Linux里面安装docker ,你要访问网页应该输入Linux的ip);

出现如下界面,则表示Apache服务安装没有问题。

docker 部署PHP网页_第2张图片

​ 在Linux上新建一个PHP 文件,这里我命名为 demo.php

输入一下内容。

ip地址根据自己的ip修改。


header("Content-Type: text/html;charset=utf-8");
echo "

Results from database

"
; $servername = "192.168.43.227"; $username = "root"; $password = "password"; $dbname = "book"; $conn = mysqli_connect('192.168.10.9','root','root') or die("error:" .mysqli_connect_error()); mysqli_select_db($conn,'book'); $sql = "SELECT * FROM student"; $result = mysqli_query($conn,$sql); while($row = mysqli_fetch_array($result)) { echo "

"; echo $row['name']. "
"
; echo "

"
; } ?>

第一次访问可能会出现一下的错误:

这是因为mysql 没有开启远程登录权限。

我们进入mysql容器修改相应的权限。

docker 部署PHP网页_第3张图片

docker exec -it 1ed50ef86354  /bin/bash

docker exec -it 加容器ID或者容器名字可以进入docker容器内。

exit 退出容器。

mysql -uroot -ppassword 登录mysql

use mysql;
SELECT User, Host FROM user;
update user set host = '%' where user = 'root';
 flush privileges;

顺便再创建一个表

create   database  book;

use book;

create  table  student (id int ,name varchar(20));

insert into student values(1,'Joy'),(2,'Tom'),(3,'James');

再次访问会出现如下错误:

Server sent charset unknown to the client. Please, report to the developers

这是因为mysql最新版的字符默认字符编码 utf8mb4,所以我们要设置MySQL的默认字符集为老版本的utf8

docker 部署PHP网页_第4张图片

还是在mysql容器内执行

mysql --help | grep my.cnf

1573871841532

查看mysql配置文件的路径那。

我安装的mysql-service精简到了连vi和vim也没有,所以需要自己手动安装。用yum安装就好了。由于没有配置yum源所以会很慢。

修改/etc/my.cnf

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
default_authentication_plugin=mysql_native_password

修改配置文件后重启一下mysql 服务。

退出到Linux 系统,执行docker restart mysqldemo

再次进入游览器,报错 The server requested authentication method unknown to the client。

是由于用户身份认证的加密方式不兼容导致的,mysql8.0中默认方式为caching_sha2_password,引起老版本兼容性问题,老版本加密方式为mysql_native_password

docker 部署PHP网页_第5张图片

mysql -uroot -p
 
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

我们这里修改为

ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;

然后再次访问:

docker 部署PHP网页_第6张图片

你可能感兴趣的:(linux)