热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

18.docker容器部署pythonredis

1.编写Vagrantfile并创建虚拟机并虚拟机绑定外部192.168.205.10:8888ip:portp.p1{margin:0;font:14px&quo

1. 编写 Vagrantfile 并创建虚拟机 并虚拟机绑定外部 192.168.205.10:8888 ip:port

# -*- mode: ruby -*-

# vi: set ft=ruby :

 

Vagrant.require_version ">= 1.6.0"

 

boxes = [

    {

        :name => "docker-node1",

        :eth1 => "192.168.205.10",

        :mem => "1024",

        :cpu => "1",

        :port => "8888"

    }

]

 

Vagrant.configure(2) do |config|

 

  config.vm.box = "centos/7"

 

  boxes.each do |opts|

      config.vm.define opts[:name] do |config|

        config.vm.hostname = opts[:name]

        config.vm.network "forwarded_port", guest: 80, host: opts[:port]

        config.vm.provider "vmware_fusion" do |v|

          v.vmx["memsize"] = opts[:mem]

          v.vmx["numvcpus"] = opts[:cpu]

        end

 

        config.vm.provider "virtualbox" do |v|

          v.customize ["modifyvm", :id, "--memory", opts[:mem]]

          v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]

        end

 

        config.vm.network :private_network, ip: opts[:eth1]

      end

  end

 

  config.vm.synced_folder "./labs", "/home/vagrant/labs"

  config.vm.provision "shell", privileged: true, path: "./setup.sh"

 

end

2.创建labs 文件夹 及编写 setup.sh 文件

  mkdir labs

  vim setup.sh

#setup.sh 

  

#/bin/sh

 

  # install some tools

  sudo yum install -y wget

  sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak

  sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

  sudo yum makecache

  sudo yum -y update

  sudo yum install -y git vim gcc glibc-static telnet bridge-utils

# install docker

  curl -fsSL get.docker.com -o get-docker.sh

  sh get-docker.sh

# start docker service

  sudo groupadd docker

  sudo usermod -aG docker vagrant

  sudo systemctl start docker

  rm -rf get-docker.sh

 

  sudo tee /etc/docker/daemon.json <<-'EOF'

  {

      "registry-mirrors": ["https://v2ltjwbg.mirror.aliyuncs.com"]

  }

  EOF

  sudo systemctl daemon-reload

  sudo systemctl restart docker

  docker version

 

3.创建虚拟机

  vagrant up

4.创建 redis 容器  不用使用 -p 将 docker 参数暴露

  docker run -d --name redis redis

5.编写dockerFile 文件

  FROM python:2.7    #基础镜像为 python:2.7

  LABEL maintaner="eaon eaon123@docker.com"  #创建者为eaon

  COPY . /app            # 复制当前的文件到 /app下

  WORKDIR /app            # 工作目录为 /app

  RUN pip install flask redis      #安装 flask 和 redis

  EXPOSE  5000             # 暴露 5000 端口进行访问

  CMD ["python", "app.py"]      # 运行 python app.py

6. build Dockerfile  创建镜像

  docker build -t 'flask-redis' .

7.编写 python 文件 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():    //定义 hello 函数  1.添加每次自增hits  2 返回一句话

  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)

 

8. 创建 redis-flask 容器

  docker run -d --link redis --name redis-flask -e REDIS_HOST=redis redis-flask

  -d 为后台运行

  --link redis 表示链接 redis 容器

  --name 表示容器名为 redis-flask

  -e 设置环境变量 REDIS_HOST=redis

  最后为启动镜像的名称

 

9. 虚拟机内访问

  将 redis-flask 添加参数 -p 4321:5000 并重新 创建容器 (前面是虚拟机的端口,后面是容器端口)

  docker stop redis-flask && docker rm redis-flask

  docker run -d --link redis --name redis-flask -p 4321:5000  -e REDIS_HOST=redis redis-flask

  在虚拟机内(容器外)使用 curl 127.0.0.1:4321 即可访问 容器内的应用

10 在外部访问 虚拟机内的容器

  将 redis-flask 修改参数 -p 8888:5000 并重新 创建容器 (前面是虚拟机的端口,后面是容器端口)

  docker stop redis-flask && docker rm redis-flask

  docker run -d --link redis --name redis-flask -p 8888:5000  -e REDIS_HOST=redis redis-flask

  在浏览器使用 192.168.205.10:8888 即可访问 虚拟机的容器内的应用

11. 环境变量 设置

  使用 -e env 可以自定义配置参数

  创建镜像

  docker run -d --name test -e EAON=eaon44 busybox /bin/sh -c "while true; do sleep 3600; done"

  运行镜像

  docker exec -it test /bin/sh

  查看环境变量

  env

  18. docker 容器部署 python-redis

 


推荐阅读
  • 在Win10上安装Centos7
    博主之前是用VMWare安装Centos机器的但是后来发现,还是比较麻烦的.需要各种配置比较繁琐,后来接触了VargrantVirtualBox后发现安装Centos,如此简单1. ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • Python开源库和第三方包的常用框架及库
    本文介绍了Python开源库和第三方包中常用的框架和库,包括Django、CubicWeb等。同时还整理了GitHub中最受欢迎的15个Python开源框架,涵盖了事件I/O、OLAP、Web开发、高性能网络通信、测试和爬虫等领域。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 今天写一篇blog,已经多长时间没有更了,两个月了吧,没办法,现在银行开发,不能连外网,天天用虚拟机,真烦今天随手写点东西,主要是这两天对于springboot启动的分析,有所领悟 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 本文介绍了Python中带有参数的装饰器的概念和使用方法,并提供了装饰器的语法格式和错误写法。同时,还给出了一个加法计算的例子,并展示了执行结果。 ... [详细]
  • Windows环境下npminstall报错:operationnotpermitted,rename的解决方法-前言最近发现了一个问题,运行npminstall命令安装依赖包,在 ... [详细]
author-avatar
c_陈可儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有