Docker的fig簡介

2021-09-14 15:45 更新

快速搭建基于 Docker 的隔離開發(fā)環(huán)境

使用 Dockerfile 文件指定你的應(yīng)用環(huán)境,讓它能在任意地方復(fù)制使用:

FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt

fig.yml 文件中指定應(yīng)用使用的不同服務(wù),讓它們能夠在一個獨立的環(huán)境中一起運行:

web:
  build: .
  command: python app.py
  links:
   - db
  ports:
   - "8000:8000"
db:
  image: postgres

*注意不需要再額外安裝 Postgres 了!

接著執(zhí)行命令 fig up ,然后 Fig 就會啟動并運行你的應(yīng)用了。

Docker

Fig 可用的命令有:

  • 啟動、停止,和重建服務(wù)
  • 查看服務(wù)的運行狀態(tài)
  • 查看運行中的服務(wù)的輸入日志
  • 對服務(wù)發(fā)送命令

快速上手

我們試著讓一個基本的 Python web 應(yīng)用運行在 Fig 上。這個實驗假設(shè)你已經(jīng)知道一些 Python 知識,如果你不熟悉,但清楚概念上的東西也是沒有問題的。

首先,安裝 Docker 和 Fig

為你的項目創(chuàng)建一個目錄

$ mkdir figtest
$ cd figtest

進(jìn)入目錄,創(chuàng)建 app.py,這是一個能夠讓 Redis 上的一個值自增的簡單 web 應(yīng)用,基于 Flask 框架。

from flask import Flask
from redis import Redis
import os
app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
    redis.incr('hits')
    return 'Hello World! I have been seen %s times.' % redis.get('hits')

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)

requirements.txt 文件中指定應(yīng)用的 Python 依賴包。

flask
redis

下一步我們要創(chuàng)建一個包含應(yīng)用所有依賴的 Docker 鏡像,這里將闡述怎么通過 Dockerfile 文件來創(chuàng)建。

FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt

以上的內(nèi)容首先告訴 Docker 在容器里面安裝 Python ,代碼的路徑還有Python 依賴包。關(guān)于 Dockerfile 的更多信息可以查看 鏡像創(chuàng)建Dockerfile 使用

接著我們通過 fig.yml 文件指定一系列的服務(wù):

web:
  build: .
  command: python app.py
  ports:
   - "5000:5000"
  volumes:
   - .:/code
  links:
   - redis
redis:
  image: redis

這里指定了兩個服務(wù):

  • web 服務(wù),通過當(dāng)前目錄的 Dockerfile 創(chuàng)建。并且說明了在容器里面執(zhí)行python app.py 命令 ,轉(zhuǎn)發(fā)在容器里開放的 5000 端口到本地主機(jī)的 5000 端口,連接 Redis 服務(wù),并且掛載當(dāng)前目錄到容器里面,這樣我們就可以不用重建鏡像也能直接使用代碼。
  • redis 服務(wù),我們使用公用鏡像 redis
  • 現(xiàn)在如果執(zhí)行 fig up 命令 ,它就會拉取 redis 鏡像,啟動所有的服務(wù)。
$ fig up
Pulling image redis...
Building web...
Starting figtest_redis_1...
Starting figtest_web_1...
redis_1 | [8] 02 Jan 18:43:35.576 # Server started, Redis version 2.8.3
web_1   |  * Running on http://0.0.0.0:5000/

這個 web 應(yīng)用已經(jīng)開始在你的 docker 守護(hù)進(jìn)程里面監(jiān)聽著 5000 端口了(如果你有使用 boot2docker ,執(zhí)行 boot2docker ip ,就會看到它的地址)。

如果你想要在后臺運行你的服務(wù),可以在執(zhí)行 fig up 命令的時候添加 -d 參數(shù),然后使用 fig ps 查看有什么進(jìn)程在運行。

$ fig up -d
Starting figtest_redis_1...
Starting figtest_web_1...
$ fig ps
        Name                 Command            State       Ports
-------------------------------------------------------------------
figtest_redis_1   /usr/local/bin/run         Up
figtest_web_1     /bin/sh -c python app.py   Up      5000->5000/tcp

fig run 指令可以幫你向服務(wù)發(fā)送命令。例如:查看 web 服務(wù)可以獲取到的環(huán)境變量:

$ fig run web env

執(zhí)行幫助命令 fig --help 查看其它可用的參數(shù)。

假設(shè)你使用了 fig up -d 啟動 Fig,可以通過以下命令停止你的服務(wù):

$ fig stop

以上內(nèi)容或多或少的講述了如何使用Fig 。通過查看下面的引用章節(jié)可以了解到關(guān)于命令、配置和環(huán)境變量的更多細(xì)節(jié)。如果你有任何想法或建議,可以在 GitHub 上提出。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號