在《Docker學習實踐》中,咱們使用了5個容器,3個使用已有鏡像,兩個使用的dockerfile構建的鏡像,一個個啓動很麻煩。今天咱們使用Docker集羣管理三劍客之一的Docker-compose來編排容器。html
Compose是Docker集羣管理的工具。你能夠在一個文件中定義一個多容器的應用,而後使用一條命令來啓動你的應用,它會自動解析容器依賴關係,下載鏡像,啓動應用。python
# 安裝docker yum install docker -y # 安裝compose yum install python-pip -y pip install -U docker-compose
咱們仍是部署django應用,把以前的命令拿過來mysql
# mx_mysql docker run -d -p 3306:3306 --name mx_mysql -v $PWD/conf/:/etc/mysql/conf.d -v $PWD/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6 # mx_redis docker run -d -p 6379:6379 -v $PWD/data/redis:/data --name mx_redis redis:3.2 redis-server --appendonly yes # mx_nginx docker run -p 80:80 --name mx_nginx -v $PWD/online/conf/mx_nginx.conf:/etc/nginx/conf.d/mx_nginx.conf --volumes-from mx_online -d nginx # mx_online docker run -d -p 8000:8000 -v /root/online:/online --name mx_online django uwsgi --http :8000 -w online.wsgi -p 3 # mx_celery docker run -d -v /root/online:/online --name mx_celery --link mx_mysql:mysql --link mx_redis:redis django celery -A online worker -l info
Dockerfile文件仍是原來的不變。nginx
首先,要將上面的命令轉換成docker-compose.yml文件web
yaml文件語法:redis
image 使用的鏡像
build 指定Dockerfile構建
command 啓動執行命令
links 連接其餘容器
ports 端口映射
expose 暴露端口
volumes 掛載路徑
volumes_from 從容器掛載
environment 環境變量
很容易就能轉換過來。sql
mx_mysql: restart: always image: mysql:5.6 volumes: - /root/data/mysql:/var/lib/mysql - ./conf/:/etc/mysql/conf.d ports: - "3306:3306" environment: - MYSQL_DATABASE=online - MYSQL_ROOT_PASSWORD=123456 mx_redis: restart: always image: redis:3.2 volumes: - /root/data/redis:/data ports: - "6379:6379" command: redis-server --appendonly yes mx_nginx: restart: always image: nginx ports: - "80:80" volumes: - ./conf/mx_nginx.conf:/etc/nginx/conf.d/mx_nginx.conf volumes_from: - mx_online links: - mx_online:web mx_online: restart: always build: . expose: - "8000:8000" volumes: - .:/online links: - mx_mysql:mysql - mx_redis:redis command: uwsgi -s :8000 -w online.wsgi -p 3 mx_celery: restart: always build: . volumes_from: - mx_online links: - mx_mysql:mysql - mx_redis:redis command: celery -A online worker -l info
開始是容器名稱,下面是容器配置,注意空兩格,使用短線再空一格。這樣就組成了應用的完整配置。目錄結構:docker
下一步,就是執行docker-compose up -d啓動應用。先下載鏡像:數據庫
建立容器:django
使用docker-compose ps 查看容器:
訪問ip地址,顯示503,說明咱們基本部署成功了,只是建數據庫,沒有建表。下面建立表:
docker-compose exec mx_online /usr/local/bin/python manage.py makemigrations
docker-compose exec mx_online /usr/local/bin/python manage.py migrate
成功就能夠正常訪問了。如今咱們的應用徹底能夠一鍵啓動了。
下面學習一下compose命令:
build 構建或重建服務
help 命令幫助
kill 殺掉容器
logs 顯示容器的輸出內容
port 打印綁定的開放端口
ps 顯示容器
pull 拉取服務鏡像
restart 重啓服務
rm 刪除中止的容器
run 運行一個一次性命令
scale 設置服務的容器數目
start 開啓服務
stop 中止服務
up 建立並啓動容器
咱們要使用的是docker-compose up -d啓動應用。
docker-compose run 會再起一個新容器,要注意刪除,使用docker-compose rm:
重啓,使用docker-compose restart:
注意這是容器名,能夠用docker命令操做,單個操做。這個是服務名,使用docker-compose命令操做,多個一塊兒操做。例如:
其餘之後再試