docker compose:
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。docker compose项目允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。它可以方便地对一组docker容器的生命周期进行管理。
编写docker-compose.yml(注意格式)
version: "2"
services:
web:
image: nginx
ports:
- "8080:80"
volumes:
- ./code:/code #创建项目根目录
- ./test.conf:/etc/nginx/conf.d/default.conf #test.conf nginx配置文件
networks:
- code-network
mysql:
image: mysql:5.7
volumes:
- ./data/mysql:/var/lib/mysql:rw #创建 /data/myql 目录
- ./logs/mysql:/var/lib/mysql-logs:rw # /logs/mysql 目录
- ./mysql/conf.d:/etc/mysql/conf.d:ro # /mysql/conf.d 目录
ports:
- "3308:3306"
environment:
MYSQL_USER: root
MYSQL_PASSWORD: 123456
MYSQL_ROOT_PASSWORD: 123456
networks:
- code-network
php:
build: ./php/ #创建 php目录
volumes:
- ./code:/code
networks:
- code-network
networks:
code-network:
driver: bridge
目录为:code data logs mysql php
这里因为要连接mysql 需要用到mysqli扩展 所以php用了Dockerfile构建自己的php镜像。
Dockerfile文件内容:
FROM php:5.6-fpm
RUN docker-php-ext-install mysqli
容器之间通过networks进行通讯。
执行docker-compose up
通过数据工具创建一个测试库和测试表。或者通过 docker exec -it mysql bash
进入mysql命令行 进行创建相应的测试数据。
然后访问
http://localhost:8080 (配置文件里的 端口自己任意修改)
编写一个连接mysql的测试文件connect_mysql.php
<?php
conn = new mysqli("mysql:3306", 'root', '123456', 'test');
if(!$conn){
die($conn->connect_error);
}
$result = mysqli_query($conn, "select * from user");
while ($arr = $result->fetch_assoc()) {
var_dump($arr);
}
?>
然后访问http://localhost:8080/connect_mysql.php 就能看到数据了。