docker(compose)

docker compose
将多个容器整合起来,一个项目需要web,redis,mysql
服务services:单个容器
项目project:容器整合后的整体

1、下载安装
#官方的速度较慢
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#国内镜像
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2、设置权限
sudo chmod +x docker-compose
3、测试
docker-compose version
----------------------------------------------------------------------------
----------------------------------------------------------------------------

1、创建一个项目目录
mkdir composetest
cd composetest
2、创建一个py文件app.py
-------------------------------------------------
import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)

def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)

@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
-----------------------------------------------------------------
3、创建一个依赖包文件requirements.txt
flask
redis
4、创建Dockerfile,打包镜像
------------------------------
# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
------------------------------
5、创建docker-compose.yml,定义整个服务需要的环境
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
------------------------------
6、在docker-compose.yml文件同级目录下执行,启动服务项目
docker-compose up

docker-compose up -d  #后台启动

docker-compose stop  #停止服务(需要在yml同级目录下)

docker-compose down  #删除服务容器

 

 

yaml规则
https://docs.docker.com/compose/compose-file/compose-file-v3/
version:版本
services:服务
服务1:web
# 服务配置
images
build
network
服务2:redis
服务3:mysql
#其他配置
volumes:
network
configs

posted @ 2021-06-04 16:23  丑矬穷屌  阅读(108)  评论(0)    收藏  举报