今天最后一步,docker compose的快速部署。
两台搭建服务器,一台php服务器,一台html服务器
docker-compose.yml
version : "2"
services:
user-service:
image: php:apache
volumes:
- /Users/chenpei/docker/php/:/var/www/html
ports:
- 8002:80
website:
image: nginx:latest
volumes:
- /Users/chenpei/docker/html/:/usr/share/nginx/html
ports:
- 8000:80
depends_on:
- user-service
html代码片段
const xhr = new XMLHttpRequest();
xhr.open("get",url,true);
xhr.send();
xhr.onreadystatechange = () =>{
if(xhr.readyState == 4){
if(xhr.status == 200){
let data = JSON.parse(xhr.responseText);
console.log(data);
}
}
}
php代码片段
echo json_encode([
"name" => "xx",
"tel" => "11111111111",
"address" => [
"province" => "a",
"city" => "b"
]
])
利用docker comopose-up 启动
这个地方使用ajax直接使用了服务名来调用,没有调通。
后来想起来了,ajax调用是发生在客户端。所以用服务名当然调不通。
所以改用了
let url = "http://localhost:8002/";
添加同源跨站代码
header("Access-Control-Allow-Origin:\*");
docker-compose.yml的depends_on其实可以去掉
在多添加一台服务器。重新添加一个服务,测试一个下服务名的调用。
dokcer-compose.yml
version : "2"
services:
user-service:
image: php:apache
volumes:
- /Users/chenpei/docker/php/:/var/www/html
ports:
- 8002:80
depends_on:
- shop-service
shop-service:
image: php:apache
volumes:
- /Users/chenpei/docker/php2/:/var/www/html
ports:
- 8001:80
website:
image: nginx:latest
volumes:
- /Users/chenpei/docker/html/:/usr/share/nginx/html
ports:
- 8000:80
php2文件
echo json_encode([
"book1",
"book2"
]);
php文件
$shop_info = json_decode(file_get_contents("http://shop-service"),true);
$user_info = [
"name" => "xx",
"tel" => "11111111111",
"address" => [
"province" => "a",
"city" => "b"
]
];
$user_info["shop"] = $shop_info;
echo json_encode($user_info);
html文件没有改变,再重新启动。
总结
对于个人而言
mac每一次版本更新,都会把自带的apache的配置的文件给格式化。
我用windows的虚拟机时候,用的桥接网络出过几次问题了。并且在虚拟机上部署一个环境很长时间。
对于企业来言,
中小企业,一个新的项目可以快速部署,开发环境和测试环境。而大企业而言,应该就是弹性伸缩
yml文件的格式
version: 版本
services: 开始定义服务,每个docker容器为一个服务。
service: 这里我们定义了第一个服务,app 为其名字
image: 镜像
build: 可以利用dockerfile构建
context: 构建下文.
dockerfile: dockerfile文件
volumes: 挂载目录
working_dir: 指定容器工作目录
environment: 设置环境变量。
command: 容器需要执行命令
depends_on: 决定依赖的服务
links: 链接到另一个服务中的容器
启动docker-compose
docker-compose up 启动
docker-compose up -d 后台启动