今天最后一步,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 后台启动


fish
101 声望2 粉丝

希望你能够学习新的技术