(1)完成Docker-compose的安装
1、下载Docker-compose
2、添加执行权限和测试
(2)Dockerfile编写
- Dockerfile-nginx
- Dockerfile-php
- Dockerfile-mysql
由于mysql的配置不是很复杂,所以这里就放到yml文件里面
- index.php
<?php $host = "zdb"; $username = "root"; $password = "123456"; $dsn="mysql:host=$host;"; try { $db = new PDO($dsn, $username, $password,array(PDO::ATTR_PERSISTENT=>true)); echo "连接成功"; } catch(PDOException $e) { echo "连接失败"; echo $e->getMessage(); } //创建数据库和表 $db->exec("create database if not exists leilei;"); echo "数据库创建成功!<br>"; $db->exec("use leilei;"); $db->exec("create table if not exists test1(name char(20));"); echo "表格创建成功!<br>"; //插入数据 $sql2 = "INSERT INTO test1 (name) VALUES ('wg');"; $db->exec($sql2); echo "记录插入成功!<br>"; //查看数据 echo "查看数据:<br>"; showdata($db); //修改数据 $db->exec("update test1 set name='baozi' where name='wg';"); echo "修改后的数据:<br>"; showdata($db); //删除数据 $db->exec("delete from test1;"); echo "删除后的数据:<br>"; showdata($db); function showdata($db){ $sql = "select * from test1"; $result = $db->query($sql); if(is_object($result)){ while ($arr = $result->fetch()) { print_r($arr); } echo "<br/>"; } else{ print_r($db->errorinfo()); echo "<br/>"; } } ?>
- 查看文件树结构(由于mysql_data里面文件过多,所以只看了两层)
扫描二维码关注公众号,回复:
11163391 查看本文章
(3)使用Compose实现多容器运行机制
- 编写compose文件
version: '3' services: nginx: container_name: zngx build: context: . dockerfile: Dockerfile-nginx ports: - "80:80" volumes: - ./web_dir/:/var/www/html/ - ./default.conf:/etc/nginx/conf.d/default.conf networks: - front_end php: container_name: zphp build: context: . dockerfile: Dockerfile-php environment: MYSQL_PASSWORD: 123456 volumes: - ./web_dir/:/var/www/html/ networks: - front_end - back_end depends_on: - mysql mysql: image: mysql:5.7 container_name: zdb restart: always volumes: - ./mysql_data:/var/lib/mysql ports: - "3306:3306" environment: TZ: 'Asia/Shanghai' MYSQL_ROOT_PASSWORD: 123456 command: ['mysqld', '--character-set-server=utf8'] networks: - back_end phpmyadmin: build: context: . dockerfile: Dockerfile-phpmyadmin container_name: phpmyadmin ports: - "8080:80" environment: PMA_HOST: zdb networks: - back_end networks: front_end: back_end:
- 运行docker-compose.yml文件
(4)服务测试
- 验证index.html
- 验证index.php
- 相关测试代码参考PHP与MySQL的教程。
(5)Phpmyadmin
- 在yml文件里面添加phpmyadmin
- 写一个Dockerfile-phpmyadmin
- 浏览器输入8080端口进入首页登录
- 登录进入并查看表信息(由于index.php最后执行delete操作,所以没有数据)
- 修改index.php,向里面插入数据并验证
六、小结
1、由于在写yml文件时无意间加入了table,导致运行时报错。
key:一行一行的去用backspace检验table的存在。唉,自己种下的恶果自己要尝。
2、在build phpmyadmin时由于要访问mysql_data里面的文件,但恰恰里面的文件却都加锁了。
key:一个个把需要用到的文件赋予读写权限
3、在调用index.php时,报出空对象异常