当前位置: 首页 > news >正文

结合python+redis+mysql制作镜像

国内的一个别人提供的一个公共的镜像仓库

sudo mkdir -p /etc/docker

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

{

  "registry-mirrors": ["https://hub.docker-alhk.dkdun.com/"]

}

EOF

 sudo systemctl daemon-reload

 sudo systemctl restart docker

第1步:编辑Dockerfile

[root@sc-docker-server ~]# mkdir /mydocker/

[root@sc-docker-server ~]# cd /mydocker/

[root@sc-docker-server mydocker]# vim Dockerfile

FROM python:2.7-slim

WORKDIR /app

ADD . /app

RUN pip install --trusted-host  pypi.python.org -r requirements.txt

EXPOSE 80

ENV NAME World

ENV AUTHOR cali

CMD ["python","app.py"]

第2步:编辑requirements.txt文件

[root@sc-docker-server mydocker]# vim requirements.txt

Flask

Redis

第3步:编辑app.py程序文件

[root@sc-docker-server mydocker]# vim app.py

from flask import Flask

from redis import Redis, RedisError

import os

import socket

# Connect to Redis

redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")

def hello():

    try:

        visits = redis.incr("counter")

    except RedisError:

        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \

           "<b>Hostname:</b> {hostname}<br/>" \

           "<b>Visits:</b> {visits}"

    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if __name__ == "__main__":

    app.run(host='0.0.0.0', port=80)

第4步:生成镜像文件

[root@sc-docker-server mydocker]#docker build -t myapp1.0   .

第5步使用镜像,启动容器

docker run -d -p 5080:80  --name sc-hello-1 myapp:1.0

第6步:访问容器的web服务

Hello World!

Hostname: f4aeb5d5305a

Visits: cannot connect to Redis, counter disabled

第7步: 启动redis容器

docker run -d -p 6379:6379 --name redis-1 redis

第8步: 再次启动一个自己制作镜像的容器,链接到redis容器  sc-redis-1是容器的名字  redis 是别名

docker run -d --name myapp-2 -p 5081:80 --link redis-1:redis myapp:1.0

第9步:访问容器的web服务

Hello World!

Hostname: aad7da1892b5

Visits: 15

分别启动2个容器

    A容器 --》app程序

    B容器 --》提供其他服务,例如:mysql、redis服务等

容器启动起来后都有一个唯一的ip地址,但是ip地址是私网里的

A容器能够找到B容器的方法有哪些?

        1.在app程序代码里写上B容器对应的ip地址和端口  ---》go语言的网站

                    写ip     写域名

        2.使用--link链接方式

            容器名字和ip地址会写到/etc/hosts

什么叫提供服务?

        背后有一个程序一直在允许,可以提供服务,例如: 网站、数据库、文件的访问

    阿里云的ACR  aliyun cloud register

    1.注册阿里云的账号

    2.访问ACR控制台--》开通个人服务

    3.创建一个命名空间

    4.访问命名空间需要密码,设置一个访问密码sc@123456

    5.创建一个镜像仓库

3. 将镜像推送到Registry 阿里云

$ docker login --username=aliyun8390986604 registry.cn-guangzhou.aliyuncs.com

$ docker tag 524ff915b071 registry.cn-guangzhou.aliyuncs.com/xiefengbao/myapp:1.0

$ docker push registry.cn-guangzhou.aliyuncs.com/xiefengbao/myapp:1.0

myapp                 1.0        524ff915b071  

nginx                  latest     bc649bab30d1

[root@docker Dockerfile]# docker images

REPOSITORY              TAG        IMAGE ID       CREATED         SIZE

myapp                   1.0        2ba278e9c4a1   3 hours ago     161MB

修改镜像的名字,里面嵌入阿里云私人仓库的地址

[root@docker Dockerfile]#docker tag 2ba278e9c4a1  registry.ap-southeast-1.aliyuncs.com/califeng/myapp:1.0

[root@docker Dockerfile]# docker images

REPOSITORY                                            TAG        IMAGE ID       CREATED         SIZE

myapp                                                 1.0        2ba278e9c4a1   3 hours ago     161MB

registry.ap-southeast-1.aliyuncs.com/califeng/myapp   1.0        2ba278e9c4a1   3 hours a

上传镜像到阿里云ACR里

[root@docker Dockerfile]# docker push registry.ap-southeast-1.aliyuncs.com/califeng/myapp:1.0

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Aippt产品运行逻辑分析
  • Linux 面试准备 - 2024
  • 传统放牧方式与北斗科技的碰撞:北三短报文头羊定位追踪器PD28守护放牧生活
  • 【根据字符出现频率排序】python刷题记录
  • 阿里云RDS到亚马逊云RDS的实时数据同步方案详解
  • 传知代码-智慧医疗:纹理特征VS卷积特征(论文复现)
  • VSCode切换默认终端
  • IP Fabric三层路由
  • 关于黑马Ajax项目的笔记
  • 原生微信小程序wxml2canvas生成海报并包保存至本地
  • 【网络安全】文件上传基础及过滤方式
  • Vue前端工程
  • 【面试】前端开发中的“八股文”:助力还是阻力?
  • 入门 PyQt6 看过来(案例)16~ 竖状菜单
  • 晋升有望,5本易录用的计算机三四区潜力刊,通过率>50%,2个月超速接收,好发
  • __proto__ 和 prototype的关系
  • bearychat的java client
  • Date型的使用
  • Gradle 5.0 正式版发布
  • Java IO学习笔记一
  • Js基础知识(一) - 变量
  • React中的“虫洞”——Context
  • vue:响应原理
  • windows-nginx-https-本地配置
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 从零开始学习部署
  • 好的网址,关于.net 4.0 ,vs 2010
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 七牛云假注销小指南
  • 设计模式 开闭原则
  • 走向全栈之MongoDB的使用
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • !!java web学习笔记(一到五)
  • (javaweb)Http协议
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (篇九)MySQL常用内置函数
  • (三)elasticsearch 源码之启动流程分析
  • (图)IntelliTrace Tools 跟踪云端程序
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)大道至简,职场上做人做事做管理
  • ***原理与防范
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET 服务 ServiceController
  • .NET 中的轻量级线程安全
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .Net语言中的StringBuilder:入门到精通
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @WebService和@WebMethod注解的用法
  • [AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务