docker學習筆記之docker compose

今天最後一步,docker compose的快速部署。php

兩臺搭建服務器,一臺php服務器,一臺html服務器html

docker-compose.ymlnginx

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代碼片斷web

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代碼片斷      ajax

echo json_encode([
    "name" => "xx",
    "tel" => "11111111111",
    "address" => [
        "province" => "a",
        "city" => "b"
    ]
])

 

利用docker comopose-up 啓動docker

這個地方使用ajax直接使用了服務名來調用,沒有調通。
後來想起來了,ajax調用是發生在客戶端。因此用服務名固然調不通。
因此改用了apache

let url = "http://localhost:8002/";

添加同源跨站代碼json

header("Access-Control-Allow-Origin:\*");

docker-compose.yml的depends_on其實能夠去掉
 
 
在多添加一臺服務器。從新添加一個服務,測試一個下服務名的調用。windows

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-composedocker-compose up 啓動docker-compose up -d 後臺啓動

相關文章
相關標籤/搜索