docker-多容器应用部署

这里使用两个容器,分别是Python和redis的,通过相连两个容器来执行一个简单的应用。在其中有一些坑,我都用红色来标明字体了

1、准备一个简单的Python文件

vim app.py 
 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('hi
 ts'),socket.gethostname())

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

2、使用Dockerfile制作一个base image为wensheng163/wensheng-pip-python,添加并设置了工作目录,安装了flask,redis库,端口号为5000,执行了app.py的image(注意,如果在FROM 写的是python,而且本地没有python的image,那么就会自动去hub.docker.com官网上获取python最新的image,但获取下的python image是最小化版image,没有IP,也不能访问公网,在执行pip install flask redis这一步的时候就会报错。这里建议先自己制作一个能访问公网的 python image,这样的话使用下面的Dockerfile创建新的镜像的时候才会成功。所以下面我就使用可以访问公网的wensheng163/wensheng-pip-python image(事先自己制作好的image),制作能访问公网的image方法小编这里也写了一篇博客,可以参考参考:https://blog.csdn.net/vincen123/article/details/89066798

vim Dockerfile 
 ###基于wensheng163/wensheng-pip-python image###
 FROM wensheng163/wensheng-pip-python
 
 ###给这个image添加说明###
 LABEL maintaner="wensheng"
 
 ###在根目录里添加app的目录###
 COPY . /app

 ###设置工作目录为/app###
 WORKDIR /app

 ###这个image运行pip install flask redis命令,安装flask和redis库###
 RUN pip install flask redis

 ###设置这个image的端口为5000###
 EXPOSE 5000

 ###这个容器执行python app.py命令###
 CMD [ "python", "app.py" ]

3、准备一个redis image并创建名为redis的container

###基于redis的image一个名为redis的container,并在后台运行###
docker run -d --name redis redis

###如果本地没有名为redis的image,那么执行这个命令后会自动在docker hub上获取官方的redis image###

现在可以看到redis的container正在运行着了

 4、创建使用Dockerfile创建Python image,名为vincen163/falsk-redis

docker build -t vincen163/falsk-redis .

6、创建并运行container

docker run -d --link redis --name python-redis -e REDIS_HOST=redis vincen163/falsk-redis

###基于vincen163/falsk-redis image创建一个名为python-redis的container,这个container在后台运行,并为这个container设置一个环境变量REDIS_HOST为redis,并且与redis container关联,并为这个container###

可以使用docker container ls确认一下这个container是否创建成功

7、交互式地运行container

docker exec -it python-redis /bin/sh
###交互式地运行python-redis这个container,进入的环境是/bin/sh###

 8、验证(在container环境下)

9、在本地运行这个应用

先将python-redis这个container关了并且删除

[root@svr3 4-apps]# docker stop python-redis
python-redis
[root@svr3 4-apps]# docker rm python-redis
python-redis

 然后重新创建一个container,将本地访问5000端口转发到容器里的5000端口

相关推荐
©️2020 CSDN 皮肤主题: 点我我会动 设计师:白松林 返回首页