第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁(yè) 慕課教程 Docker 入門(mén)教程 Docker 入門(mén)教程 使用 Docker 部署運(yùn)行常用服務(wù)

Docker 部署常用服務(wù)

經(jīng)過(guò)上面幾節(jié)的積累,我們對(duì) Docker 各個(gè)方面都有了大致的了解,這一節(jié),我們將常用的 Redis,Nginx, Mysql 等服務(wù)部署到 Docker 上來(lái)。

1. 獲取 Docker 服務(wù)

Tips:這里部署時(shí)默認(rèn)使用最新穩(wěn)定的官方鏡像版本,如有版本要求自行在鏡像名后標(biāo)注 :tag 即可。

1.1 Redis

Redis 是一個(gè)使用 ANSI C 編寫(xiě)的開(kāi)源、支持網(wǎng)絡(luò)、基于內(nèi)存、可選持久性的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫(kù)。

# 使用 Docker 啟動(dòng) redis 服務(wù),端口默認(rèn),使用host網(wǎng)絡(luò)模式保障性能。
docker run --restart=always --network host -d -it --name myredis redis

將 redis 數(shù)據(jù)保存到宿主機(jī)目錄:

mkdir -p ~/docker/redis/data # 新建宿主機(jī)目錄
docker run --restart=always --network host  -d -it -v ~/docker/redis/data:/data --name myredis redis

指定自己的配置文件

# 先將配置文件放到 ~/docker/redis/redis.conf
docker run --restart=always --network host -d -it -v ~/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf

1.2 Nginx

Nginx 是異步框架的網(wǎng)頁(yè)服務(wù)器,也可以用作反向代理、負(fù)載平衡器和HTTP緩存:

# 使用 Docker 啟動(dòng) redis 服務(wù),端口默認(rèn),使用host網(wǎng)絡(luò)模式保障性能。
# 使用自己的html目錄,ro設(shè)定宿主機(jī)目錄掛載到容器后,容器對(duì)此目錄只讀
docker run --restart=always --network host -d -it -v ~/docker/nginx/html:/usr/share/nginx/html:ro --name mynginx nginx 

指定自己的配置文件

  # 先將配置文件放到 ~/docker/nginx/etc/nginx 目錄下
  docker run --restart=always --network host -d -it -v ~/docker/nginx/html:/usr/share/nginx/html:ro -v ~/docker/nginx/etc/nginx:/etc/nginx --name mynginx nginx 

1.3 MySQL

MySQL是一個(gè)開(kāi)放源碼的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。

# 使用 Docker 啟動(dòng) redis 服務(wù),端口默認(rèn),使用host網(wǎng)絡(luò)模式保障性能。
# my-secret-pw 指定mysql的root用戶密碼
docker run --restart=always --network host -d -it --name mymysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql

將mysql數(shù)據(jù)保存到宿主機(jī)目錄:

mkdir -p ~/docker/mysql/data # 新建宿主機(jī)目錄
docker run --restart=always --network host  -d -it -v ~/docker/mysql/data:/var/lib/mysql --name mymysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql

指定自己的配置文件

 # 將配置文件放入 ~/docker/mysql/conf.d/
docker run --restart=always --network host  -d -it -v ~/docker/mysql/conf.d/:/etc/mysql/conf.d  --name mymysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql

2. 實(shí)戰(zhàn):使用 flask 調(diào)用 redis 容器應(yīng)用

接下來(lái)我們將通過(guò)一個(gè)flask web應(yīng)用,實(shí)現(xiàn)主頁(yè)訪問(wèn)計(jì)數(shù)功能,我們使用 redis 服務(wù)幫助我們實(shí)現(xiàn)計(jì)數(shù)統(tǒng)計(jì)功能。這個(gè) redis 服務(wù)運(yùn)行在我們的 Docker 容器中。

Tips: 這里使用 flask 只是想借助一個(gè)簡(jiǎn)單的 web 框架來(lái)演示使用 docker 容器運(yùn)行的 redis,不了解也沒(méi)有關(guān)系,這里只是一個(gè)小例子。

首先,我們?cè)?CentOS 中安裝 Python3 和flask框架,以及 Python 的 redis 客戶端庫(kù)。

# 安裝python3
sudo dnf install -y python3
# 安裝flask與redis python客戶端
pip3 install redis flask --user

接下來(lái),將下面的代碼保存到~/test/app.py

import flask

from flask import Flask

app = Flask(__name__)

from redis import StrictRedis
from redis import ConnectionPool

# 指定redis服務(wù)地址
REDIS_HOST = os.getenv('REDIS_HOST','127.0.0.1')
# 指定redis端口號(hào)
REDIS_PORT = os.getenv('REDIS_PORT', '6379')
# 指定redis的數(shù)據(jù)庫(kù)
REDIS_DB = os.getenv('REDIS_DB', '0')
# 指定redis的密碼
REDIS_PASSWORD = os.getenv('REDIS_PASSWORD', '12345678')

class Redis:
    def __init__(self):
        self.cli = None

    def connect(self):
        pool = ConnectionPool(host=REDIS_HOST,
                              port=REDIS_PORT,
                              db=REDIS_DB,
                              password=REDIS_PASSWORD)
        return StrictRedis(connection_pool=pool)

    def add_pv(self):
        self.connection.incr('pv', 1)

    def get_pv(self):
        count = self.connection.get('pv')
        return int(count)

    @property
    def connection(self):
        if self.cli:
            return self.cli
        else:
            self.cli = self.connect()
            return self.cli


redis = Redis()


@app.route('/')
def index():
    redis.add_pv()
    return "<h1>Hello World, 本頁(yè)已訪問(wèn){}次。</h1>".format(redis.get_pv())

~/docker/redis/ 目錄下,配置 redis.conf 文件

cd ~/docker/redis
# 獲取官方提供的redis配置文件模板
wget http://download.redis.io/redis-stable/redis.conf
# 修改redis密碼
echo  "requirepass 12345678" >> redis.conf

配置文件修改好后,用它來(lái)配置 Docker 的 redis 容器應(yīng)用。

docker run --restart=always --network host -d -it -v ~/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf

redis容器啟動(dòng)完成后,在 ~/test/ 目錄下執(zhí)行 python3 -m flask run,打開(kāi)Linux系統(tǒng)中的瀏覽器,輸入127.0.0.1:5000 訪問(wèn)這個(gè) web 應(yīng)用的主頁(yè),多次刷新查看效果。
圖片描述

3. 小結(jié)

Docker官方鏡像倉(cāng)庫(kù) 提供了眾多高質(zhì)量的鏡像和使用文檔,生態(tài)也非?;钴S。這種簡(jiǎn)單的部署方式更接近是一種獲取軟件的方式,相信大家都有體會(huì),在平時(shí)的開(kāi)發(fā)測(cè)試中,個(gè)人的開(kāi)發(fā)機(jī)上安裝這些服務(wù)經(jīng)常費(fèi)時(shí)費(fèi)力,到時(shí)尋找安裝包,甚至可能還要編譯源碼,結(jié)果出現(xiàn)一些意想不到的問(wèn)題。熟練掌握這種方法部署應(yīng)用服務(wù),可以快速且高效地獲取一致的開(kāi)發(fā)部署環(huán)境。