欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker在多容器部署应用(18)

程序员文章站 2022-06-03 13:59:38
...

一、实验概述

Docker在多容器部署应用(18)

分别创建部署两个容器flask-redis和redis,让容器flask-redis可以访问容器redis,并将5000映射至本地,进行访问。

二、实验步骤

1、上传app.py到/app目录下,以下为app.py的内容,实现通过访问5000端口,达到让redis显示记录访问次数的效果

from flask import Flask
from redis import Redis
import os
import socket

app = Flask(__name__)
redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)


@app.route('/')
def hello():
    redis.incr('hits')
    return 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis.get('hits'),socket.gethostname())


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000, debug=True)

2、在/app目录下编辑Dockerfile文件

FROM python:2.7
LABEL maintaner="aaa@qq.com"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 5000
CMD [ "python", "app.py" ]

3、build镜像

[aaa@qq.com app]# docker build -t zheng/flask-redis .

4、创建redis容器,其默认端口是6379,不用-p进行端口暴露

[aaa@qq.com app]# docker run -d --name redis redis
ba1f8a2e37ec703cc8f849a6d5bd0b26d0c83989444338683d89299a87c24d0b
[aaa@qq.com app]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED            
 STATUS              PORTS               NAMESba1f8a2e37ec        redis               "docker-entrypoint.s…"   11 seconds ago    
  Up 9 seconds        6379/tcp            redis

5、创建容器flask-redis,并且link到容器redis进行通信,传递 REDIS_HOST=re
dis的环境变量

[aaa@qq.com app]# docker run -d --name flask-redis --link redis -e REDIS_HOST=re
dis zheng/flask-redis

6、进入容器flask-redis,即可访问5000端口

[aaa@qq.com app]# docker exec -it flask-redis /bin/sh
# ping redis
PING redis (172.17.0.2) 56(84) bytes of data.
64 bytes from redis (172.17.0.2): icmp_seq=1 ttl=64 time=0.104 ms
64 bytes from redis (172.17.0.2): icmp_seq=2 ttl=64 time=0.156 ms
64 bytes from redis (172.17.0.2): icmp_seq=3 ttl=64 time=0.144 ms
--- redis ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.104/0.134/0.156/0.025 ms
# curl 127.0.0.1:5000
Hello Container World! I have been seen 1 times and my hostname is ee04b54f304e.
# curl 127.0.0.1:5000 
Hello Container World! I have been seen 2 times and my hostname is ee04b54f304e.
# exit

7、将5000端口映射到本地,宿主机本地便可访问5000端口

[aaa@qq.com app]# docker stop flask-redis 
flask-redis
[aaa@qq.com app]# docker rm flask-redis 
flask-redis
[aaa@qq.com app]# docker run -d --name flask-redis --link redis -e REDIS_HOST=re
dis -p 5000:5000 zheng/flask-redis922122ac6ec6eeb38ee8de093ffebc922a008f24432b00d8f893345afdd9bc03
[aaa@qq.com app]# curl 127.0.0.1:5000
Hello Container World! I have been seen 3 times and my hostname is 922122ac6ec6.
[aaa@qq.com app]# curl 127.0.0.1:5000
Hello Container World! I have been seen 4 times and my hostname is 922122ac6ec6.