安装好docker-compose后,我们要体验一下了解基础的操作和命令。
搞一个官方demo,python应用。 计数器。redis
我先来一个官方文档地址,基本很多都是按照文档来的,建议尽量去官方文档来产看最新的,我这个可能也只是主要内容搬运了当前官方文档的,以官方为准。
docker compose官网:compose started
步骤1
创建文件夹以及路径
mkdir composetest
cd composetest
创建文件(文件内容主要是弄一个计时器,通过time包和redis来)
创建文件 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)
再创建一个文件requirements.txt
步骤2
创建一个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"]
step3
定义服务在一个compose文件
创建一个docker-compose.yml文件
version: "3.7"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
这个文件镜像既可以自己去bulid也可以去拉取现成的镜像
step4
bulid并运行你的compose
docker-compose up
我这里出了点小问题,报错
Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
看了一个github上的回复,他改成3.7就可以了,我这边改了也是可以的,可能是我这个版本暂时不支持这么新的,问题可能是python的问题。
如果下载慢的话,我觉得配置一下docker下载的国内镜像可能会有帮助。
如何验证是否成功了呢这个demo
你可以在网页地址栏上输入:
你的服务器IP:5000
这个5000是文件设置好的,你可以在上面的文件找到位置修改,当然要记得打开对应的防火墙
效果如图:
大概的意思demo启动了两个服务,一个web一个redis,你刷新一边这个网页就加一,计数器是由redis来提供的功能,来证明compose它可以编排多个镜像。
总结一下流程:
1创建网络
2执行Docker-compose.yaml
3启动服务