Docker入門(三)使用Docker Compose

Compose介紹

  Compose 項目是 Docker 官方的開源項目,負責實現對 Docker 容器集羣的快速編排。Compose 是一個用戶定義和運行多個容器的 Docker 應用程序。在 Compose 中你可使用 YAML 文件來配置你的應用服務。而後,只須要一個簡單的命令,就能夠建立並啓動你配置的全部服務。前端

爲何使用Compose

  在Docker鏡像構成和定製介紹中,咱們可使用Dockerfile文件很方便定義一個單獨的應用容器。然而,在平常工做中,常常會碰到須要多個容器相互配合來完成某項任務的狀況。例如要實現一個 Web 項目,除了 Web 服務容器自己,每每還須要再加上後端的數據庫服務容器,甚至還包括負載均衡容器等。Compose 剛好知足了這樣的需求。它容許用戶經過一個單獨的 docker-compose.yml 模板文件(YAML 格式)來定義一組相關聯的應用容器爲一個項目(project)。python

安裝Compose

  Compose的安裝十分容易,只須要如下命令便可:mysql

pip install docker-compose

爲了檢測Compose是否安裝成功,能夠查看Compose的版本信息,以下:c++

$ docker-compose -version
docker-compose version 1.23.2, build 1110ad0

Compose實戰

  接下去咱們將經過一個具體的項目來展現Compose的使用。項目的結構以下:git

項目結構

  對於項目的Python代碼,咱們再也不具體講述,有興趣的同窗可移步:https://github.com/percent4/P...
  首先咱們先打包一個poem_search鏡像,用於前端運行,而後拉取鏡像mongo,最後用Compose將兩個鏡像打包在一塊兒,共同運行。
  打包poem_search鏡像涉及到兩個文件:poem_search.build及build_poem_search.sh 。其中Dockerfile文件poem_search.build以下:github

FROM centos:7.5.1804

# 維護者
MAINTAINER jclian91@sina.com

# 安裝基礎環境
RUN yum clean all \
    && yum makecache \
    && yum update -y \
    && yum groupinstall -y "Development tools" \
    && yum install -y yum-utils \
    && yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel \
    && yum install -y sqlite-devel readline-devel tk-devel gdbm-devel \
    && yum install -y db4-devel libpcap-devel xz-devel \
    && yum install -y wget gcc gcc-c++ automake autoconf libtool make \
        && yum install -y wget gcc gcc-c++ python-devel mysql-devel bzip2 \
    && yum install -y https://centos7.iuscommunity.org/ius-release.rpm \
    && yum install -y python36u \
    && yum install -y python36u-pip \
    && yum install -y python36u-devel \
    && yum clean all

# 安裝Python3.6
RUN cd /usr/bin \
    && mv python python_old \
    && ln -s /usr/bin/python3.6 /usr/bin/python \
    && ln -s /usr/bin/pip3.6 /usr/bin/pip \
    && pip install --upgrade pip

#環境變量硬編碼及時區
ENV ENVIRONMENT production
RUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#安裝Python的第三方模塊
RUN pip3 install pandas -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
    && pip3 install pymongo -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
    && pip3 install tornado -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
    && pip3 install urllib3 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
    && pip3 install requests -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
    && pip3 install bs4

# 拷貝
COPY ./src /root/poem_search/src

# 工做目錄
WORKDIR /root/poem_search/src

# 暴露端口
EXPOSE 8000

# 執行命令
CMD ["python","server.py"]

shell腳本build_poem_search.sh的代碼以下:web

tag=$1
# -f 指定文件 , -t 指定生成鏡像名稱 , 冒號後爲版本號,最後的.表示docker_file的上下文環境
docker build -f poem_search.build -t hub.docker.com/poem_search:test.${tag} .

打包鏡像,並將該鏡像推送至本身的docker hub,命令以下:算法

./build_poem_search.sh 1111

鏡像打包完後,將其推送至本身的docker hub,具體的命令能夠參考文章:Docker入門(一)用hello world入門docker , 以下圖:sql

dockhub鏡像

接着,拉取MongoDB鏡像:docker

docker pull mongo

最後,用docker compose將兩個鏡像組合在一塊兒,其中docker-compose.yml以下:

version: "3.3"

# 定義兩個服務: poemSearch, mongo
services:
  poemSearch:
    depends_on:
      - mongo
    image: jclian91/poem_search:v1.0_2019.02.20.1745
    container_name: poemSearch
    ports:
      - "8000:8000"
    restart: always
    deploy:
      replicas: 1
    networks:
      - poemSearch

  mongo:
    image: mongo:latest
    container_name: mongo
    deploy:
      replicas: 1
    networks:
      - poemSearch
    ports:
      - "27017:27017"
    volumes:
      - $PWD/db:/data/db
    command: ["mongod"]

#Network
networks:
  poemSearch:

關於YAML文件的編寫及說明,能夠參考網址:http://blog.51cto.com/wutengf...
  切換至YAML所在文件夾,輸入命令:

docker-compose up -d

輸出的結果以下:

Creating mongo ... done
Creating poemSearch ... done

這時,在瀏覽器中輸入「http://localhost:8000/query」便可運行咱們的程序,界面以下:

詩歌搜索界面

在其中輸入搜索關鍵詞,好比「白雲」,則會顯示一條隨機的結果,以下:

詩歌搜索結果

點擊「查詢詞高亮」,則查詢詞部分會高亮顯示。

體驗Compose

  若是須要體驗該項目,則須要如下三個工具:

  • git
  • docker
  • docker-compose

用git下載該項目,命令以下:

git init
git clone -b v1.2 https://github.com/percent4/Poem-Search.git

而後切換至docker-compose.yml所在路徑,運行命令:

docker-compose up -d

便可運行該項目,而後在瀏覽器中輸入「http://localhost:8000/query」便可。如須要中止該項目的運行,則運行命令:

docker-compose down

總結

  本項目的github地址爲https://github.com/percent4/P..., 分支爲v1.2 。

注意:本人現已開通微信公衆號: Python爬蟲與算法(微信號爲:easy_web_scrape), 歡迎你們關注哦~~

相關文章
相關標籤/搜索