Docker 多容器, 复杂应用的部署!
这次启动两个容器
一个容器用于运行 redis。 另一个运行 python的 flask web应用。
在这个 web app 里面, 访问redis。
[ py-flask-redis]$ lsapp.py Dockerfile[ py-flask-redis]$ cat app.py from flask import Flaskimport redisimport os host = os.environ.get("REDIS_HOST", "redis") redis_conn = redis.Redis(host=host, port="6379") app = Flask(__name__) @app.route("/")def web_test(): res = redis_conn.incr("range_key") return "这是我第 %s 次调用, incr 方法。" % res if __name__ == "__main__": app.run(host="0.0.0.0", port=5000) [ py-flask-redis]$ cat Dockerfile FROM python:3.7.7LABEL maintainer=""COPY app.py /app/RUN pip install flask redisWORKDIR /appEXPOSE 5000 CMD ["python3", "app.py"] 然后进行 docker build [ py-flask-redis]$ docker build -t caijiwandocker/flask-redis [ py-flask-redis]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE caijiwandocker/flask-redis latest 557535394ca7 8 minutes ago 929MB python 3.7.7 859d8ec7db6a 10 days ago 919MB redis latest 4cdbec704e47 11 days ago 98.2MB 构建完成之后, 执行docker run 先将redis 容器 启动起来,[ py-flask-redis]$ docker run -d --name=redis redis 然后启动刚刚构建好的 flask的应用。[ py-flask-redis]$ docker run -d --link=redis -p 5000:5000 -e REDOS_HOST=reids caijiwandocker/flask-redis
解释一下:
--link=redis link到 redis。 这个redis仅仅只是个名字, 用代替 redis 这个容器的 ip地址使用的。(因为ip地址是多变的。但是只要name不变 就可以访问)
-p 5000:5000 将主机的 5000端口 映射到 这个flask 容器,抛出的5000端口上。
-e REDOS_HOST=reids 为这个flask容器 添加一个环境变量。 (app.py 中 os.environ.get("REDOS_HOST")) 其实就是获取的这个环境变量。
这样如果某一天, redis这个容器要换一个名字,换成 redis-v1 , 那再运行flask这个容器时就可以这样:
[ py-flask-redis]$ docker run -d --link=redis-v1 -p 5000:5000 -e REDOS_HOST=reids-v1 caijiwandocker/flask-redis
完全不需要去理会, ip地址到底是多少。 很是方便。
##################################################################################################
在这个例子中 redis 服务器。仅仅只是 内部的 app 进行访问。 而由于docker的 bridge 存在. 容器和容器之间就可以相互的通信访问。
所以redis服务器, 完全没必要去做映射。 这样反而会让外部也能访问到 redis。 反而不安全。
仅仅只需要 为 flask 容器。 做一个映射 让外部可以访问到flask就可以了。
相关推荐
王道革 2020-11-25
yangkang 2020-11-09
ChlatZed 2020-11-11
xysoul 2020-11-03
lnkToKing 2020-10-29
ChlatZed 2020-10-27
dusuanyun 2020-09-21
newisI 2020-09-01
fearlessxjdx 2020-09-04
bwyyziq 2020-11-22
pigsmall 2020-11-19
changecan 2020-11-19
helloWorldAndYou 2020-11-16
nginxs 2020-11-14
红石丶 2020-11-13
WanKaShing 2020-11-12
yangkang 2020-11-12
滴水穿石点石成金 2020-11-12
张荣珍 2020-11-12