Docker的fig簡(jiǎn)介

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ù),讓它們能夠在一個(gè)獨(dú)立的環(huán)境中一起運(yùn)行:

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

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

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

Docker

Fig 可用的命令有:

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

快速上手

我們?cè)囍屢粋€(gè)基本的 Python web 應(yīng)用運(yùn)行在 Fig 上。這個(gè)實(shí)驗(yàn)假設(shè)你已經(jīng)知道一些 Python 知識(shí),如果你不熟悉,但清楚概念上的東西也是沒有問題的。

首先,安裝 Docker 和 Fig

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

$ mkdir figtest
$ cd figtest

進(jìn)入目錄,創(chuàng)建 app.py,這是一個(gè)能夠讓 Redis 上的一個(gè)值自增的簡(jiǎn)單 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

下一步我們要?jiǎng)?chuàng)建一個(gè)包含應(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

這里指定了兩個(gè)服務(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 命令 ,它就會(huì)拉取 redis 鏡像,啟動(dòng)所有的服務(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/

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

如果你想要在后臺(tái)運(yùn)行你的服務(wù),可以在執(zhí)行 fig up 命令的時(shí)候添加 -d 參數(shù),然后使用 fig ps 查看有什么進(jìn)程在運(yù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 啟動(dòng) Fig,可以通過以下命令停止你的服務(wù):

$ fig stop

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)