使用Docker-Compose 启动 python 和redis 容器并测试下计数,例子十分简单易理解
需要用到镜像 python ,redis
Docker-Compose 小demo
app.py 需要运行的py脚本
app.text 需要pip安装的库
docker-compose.yml docker-compose配置文件
Dockerfile redis Dockerfile
Dockerfile.py.bak python镜像的 Dockefile (构建镜像后改了下名)
redis.conf redis 配置文件
python Dockerfile (直接用官方的基础镜像)
Docker-Compose 小demo
redis Dockfile (redis:5 是之前已经构建过的一个基础镜像)
FROM redis:5
LABEL maintainer=“Robert”
WORKDIR /usr/local/redis/bin/
COPY redis.conf redis.conf
RUN chmod u+x *
ENTRYPOINT ["/usr/local/redis/bin/redis-server"]

redis:5

redis conf
bind 0.0.0.0
port 6379
protected-mode no

app.txt
flask
redis
docker-compose.yml 这里是使用的版本3 ,yml文件的编写一定更要注意层级以及冒号后必须留空格
Docker-Compose 小demoservices:
pyapp:
image: testdmapp:1 ##使用上面dockerfile 构建的python 镜像(也可以使用dockefile 构建 ,这里改成 build 值要写构建的上下文路径)
command: python app.py ## 启动容器时执行的命令
container_name: pyapp ##容器的名字
ports: ##开放的端口,flask默认是5000
- “5000:5000”
volumes: ##创建匿名卷
- .:/composeapp
networks: #配置容器网络,或是用link 将容器链接 感兴趣的小伙伴可以自行了解
appnet: ##网络的名称
aliases: ##python容器网络别名,同一个网络下的其他容器可以用这个别名进行访问
- pyapp
redis:
image: redispy:1
command: redis.conf
container_name: redis1
ports:
- “6379:6379”
networks:
appnet:
aliases:
- redis1

networks: ##配置容器网络
appnet:
external: ##是否使用外部网络,可选填 true ,无值若无对应的网络存在则自动创建
name: redis-net ##已经构建好的网络,使用 docker network create redis-net 命令构建,不加具体参数则默认使用 bridge ,自动分配子网

app.py
from flask import Flask
from redis import Redis
import os

app = Flask(name)
redis = Redis(host=“redis1”,port=6379)
@app.route("/")
def counthello():
redis.incr(‘hits’)
return ‘Hello the testapp had been visit {0}’.format(redis.get(‘hits’))

if name== “main”:
app.run(host=“0.0.0.0”,debug=True)

后台启动(要在构建上下文启动使用该命令)
docker-compose up -d
Docker-Compose 小demo
Docker-Compose 小demo
访问
Docker-Compose 小demo
再次访问
Docker-Compose 小demo

简单docker-compose 小demo 至此就搭建并测试成功,想要更深一步了解docker-compose.yml配置文件 可以参考官方文档 https://docs.docker.com/compose/compose-file/

相关文章: