专栏首页编程坑太多『中级篇』多容器复杂应用的部署(30)
原创

『中级篇』多容器复杂应用的部署(30)

通过前几次学习,对于docker的网络特别是单机,今天这次主要一起来看比较复杂的,会用到前面学到的docker的网络知识。今天创建一个application。这篇的源码在:https://github.com/limingios/docker.git 中的docke/No.2/labs/flask-redis/

源码分析
  • application的app.py程序解释:启动一个应用程序web端,访问一个redis,用户每次访问redis对应的key就会增加1,app的主机,端口是5000
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)
  • docker的Dockerfile引用pyhon2.7的image,主机目录的app,拷贝到app目录下,运行pip按照python的插件,暴露5000端口,运行 python app.py
FROM python:2.7
LABEL maintaner="¹«Öںţº±à³Ì¿ÓÌ«¶à 394498036@qq.com"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 5000
CMD [ "python", "app.py" ]
  • 开始构建
ls 
cd labs
cd flask-redis
ls
sudo service docker restart
sudo docker run -d --name redis redis
sudo docker ps

有老铁会问,为啥不用上几节说的-p啊 -p 6379:6379 我这是为了内部访问啊,不需要暴露出来。.

#怼上加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.io
sudo service docker restart
#创建对应的镜像image
sudo docker build -t liming/flask-redis .
  • 创建容器sudo docker container start redis #通过-e 命令,把环境变量REDIS_HOST=redis 放入容器的环境变量中 sudo docker run -d --link redis --name flask-redis2 -e REDIS_HOST=redis liming/flask-redis sudo docker exec -it flask-redis2 /bin/sh env #效果就出来了 curl 127.0.0.1:5000
image.png
  • 我们把容器删除,然后把容器的端口映射到端口宿主机上sudo docker stop flask-redis2 sudo docker rm flask-redis2 sudo docker run -d -p 5000:5000 --link redis --name flask-redis2 -e REDIS_HOST=redis liming/flask-redis

#####图例解释今天的部署

![(https://upload-images.jianshu.io/upload_images/11223715-8a1876d398bd6dde.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

PS:有2个容器,他们有访问的关系。通过这个例子大家可以想到现实的例子很多项目有前后台之分的,有数据库,有前端,有后端,对于分模块的项目中,我们推荐使用容器的方式,可以给每个模块放入不同的容器。还讲了-e的方式给容器内设置环境变量的方式,方便应用的访问。


image

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 「走进k8s」Docker三剑客之Docker Machine(八)

    PS:云环境下批量部署 Docker环境,使用的比较多的是公有云和私有云上安装。命令比较简单。docker machine就是在远程机器上安装docker的,虽...

    IT故事会
  • 『高级篇』docker之DockerSwarm的集群环境搭建(28)

    PS:以上就完成高可用的docker swarm的集群环境,其实真心比其他的简单。

    IT故事会
  • 『高级篇』docker之DockerSwarm的了解(27)

    PS:假定运行了一个nginx服务2个实例,nginx1 和nginx2,容器内的端口是80,主机内的端口是8080, 这2个容器分别运行在node2和node...

    IT故事会
  • docker配置redis集群和scrapyd服务

    Redis集群的配置方式我们上一篇已经介绍过了,而且使用Dockerfile配置文件我们也介绍了,不过介绍的并不详细,可能有些人看不明白,这篇我们再介绍一些Do...

    星星在线
  • Docker的典型应用场景

    相对于VM,docker在其轻量、配置复杂度以及资源利用率方面有着明显的优势。 随着docker技术的不断成熟,越来越多的企业开始考虑通过docker来改进自己...

    小小科
  • 如何在Ubuntu上 dockerize和部署多个WordPress应用程序

    WordPress已成为世界上最常见的部署和使用的Web应用程序之一。由于多年的不断发展,现在可以基于WordPress及其可用的插件/扩展创建几乎无数的不同网...

    大瓜皮
  • 使用 docker-compose 快速安装Jenkins

    当前 docker 版本:Docker version 18.09.0 当前 docker-compose 版本:docker-compose version...

    易墨
  • Docker入门

    docker 在线测试网站: play With Docker,这是一个可以用来在线练习 docker 指令的网站,具备一切 docker 环境,不用为环境而...

    jinghong
  • 跟我一起学docker(12)--docker compose的使用

    IT故事会
  • Spring Boot 配置文件 application.properties

    在 Spring Boot 中,配置文件有两种不同的格式,一个是 properties ,另一个是 yaml 。

    江南一点雨

扫码关注云+社区

领取腾讯云代金券