Docker-compose綜合訓練
一. 實驗目的:
- 熟悉Docker-compose的基本工作原理;
- 熟悉Docker-compose安裝
- 熟悉Docker compose命令基礎
- 熟悉Docker compose配置文件
二. 實驗環境:
Ubuntu16.04+Docker
三. 實驗內容:
- 練習使用docker-compose;
四.實驗練習:
採用二進制安裝Compose
(1)先在github的release頁面下載
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
(2)賦予權限
sudo chmod +x /usr/local/bin/docker-compose
(3)查看docker-compose的版本號:
docker-compose version
五、
(一)創建一個Python應用, 使用Flask,將數值記入Redis
1、建立一個應用的目錄,創建Python文件
# mkdir python
# cd python
# vim app.py
from flask import Flask
from redis import Redis
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)
# vim requirements.txt
flask
redis
2、創建 Dockerfile
在同一目錄下,創建Dockerfile
對上面的Dockerfile做一下簡單說明:
- 容器使用Python 2.7的鏡像
- 將當前目錄下文件拷貝到容器內/code
- 指定工作目錄爲/code
- 安裝python需要的庫:flask, redis
- 容器執行命令 python app.py
3、創建編排腳本
在同一目錄下,創建 docker-compose.yml
# cat docker-compose.yml
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
depends_on:
- redis
redis:
image: redis
對上面的編排腳本做一下簡單說明:
這個應用定義了兩個服務:web, redis
web容器通過當前路徑下的Dockerfile生成
web容器內的5000端口映射到主機的5000端口
將當前目錄掛載到web容器內/code
web容器依賴於redis容器
redis容器從Docker Hub獲取鏡像
之後發現未正確對齊,出現錯誤
4、 啓動應用
會執行編排腳本,分別製作和抓取web,redis鏡像,啓動容器
# docker-compose up
5、訪問應用
打開另一個終端訪問,不要Ctrl+C 停止服務,訪問http://localhost:5000/
(二)創建一個Wordpress應用
1、 建立一個應用的目錄
# mkdir wordpress
# cd wordpress
2、創建 docker-compose.yml
version: '2'
services:
db:
image: mysql:5.7
volumes:
- "./.data/db:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
links:
- db
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress
3、啓動應用
# docker-compose up -d
4、確認
# docker-compose ps
5、訪問應用
這裏注意:有的人的圖形界面瀏覽器不能訪問,原因是沒有安裝nginx服務,可以在瀏覽器裏面搜索試試看看有沒有安裝nginx服務。