首页 > 科技周边 > IT业界 > Docker和Docker的功能深度构成

Docker和Docker的功能深度构成

Lisa Kudrow
发布: 2025-02-08 09:06:11
原创
666 人浏览过

The Functional Depth of Docker and Docker Compose

使用Docker Compose和Vultr容器注册表构建多容器Flask应用

Docker Compose允许用户使用单个配置文件运行和定义多容器应用程序。它简化了设置和管理多个容器的过程,从而更容易地开发、测试和部署应用程序。本文将指导您创建一个包含两个容器的Flask应用程序,使用Vultr容器注册表(VCR)管理应用程序的Docker镜像,并利用Docker Compose的多容器功能来管理多个容器。

示例应用程序的创建

以下步骤将引导您创建一个示例应用程序:

  1. 通过Vultr客户门户使用Docker市场应用程序部署一个Vultr计算实例。

  2. 使用SSH以非root sudo用户安全地访问服务器。

  3. 更新服务器。

  4. 创建一个新的项目目录并进入该目录:

    mkdir flask-redis-example
    cd flask-redis-example
    登录后复制
    登录后复制
  5. 创建一个名为app.py的新文件:

    nano app.py
    登录后复制
    登录后复制
  6. 添加以下代码:

    from flask import Flask, render_template
    import redis
    
    app = Flask(__name__)
    redis_client = redis.Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        count = redis_client.incr('hits')
        return render_template('index.html', count=count)
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)
    登录后复制
    登录后复制

    保存并退出文件。这段Flask代码连接到Redis数据库,并在每次访问根URL时递增计数器。

  7. 允许传入连接到端口5000并重新加载防火墙:

    sudo ufw allow 5000
    sudo ufw reload
    登录后复制
    登录后复制
  8. 创建一个名为requirements.txt的新文件:

    nano requirements.txt
    登录后复制
  9. 添加以下包:

    <code>flask
    redis</code>
    登录后复制

    保存并关闭文件。

  10. flask-redis-example目录内创建另一个目录并进入该目录:

     mkdir static
     cd static
    登录后复制
  11. 创建一个名为styles.css的新文件:

     nano styles.css
    登录后复制
  12. 添加以下代码:

     body {
         font-family: Arial, sans-serif;
         text-align: center;
         background-color: #f4f4f4;
         margin: 0;
         padding: 0;
     }
    
     h1 {
         color: #333;
         margin-top: 50px;
     }
    
     p {
         font-size: 18px;
         color: #666;
     }
    登录后复制

    保存并退出文件。

  13. flask-redis-example目录内创建另一个目录并进入该目录:

     mkdir templates
     cd templates
    登录后复制
  14. 创建一个名为index.html的新文件:

     nano index.html
    登录后复制
  15. 添加以下代码:

     <!DOCTYPE html>
     <html>
     <head>
         <title>Flask App</title>
         <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
     </head>
     <body>
         <h1>Hello, World!</h1>
         <p>I have been seen {{ count }} times.</p>
     </body>
     </html>
    登录后复制

    保存并退出文件。

使用Vultr容器注册表

在本节中,您将创建一个Vultr容器注册表,将您的Docker镜像上传到注册表,并设置一个Docker Compose文件来设置Flask和Redis数据库的服务。

  1. 部署一个Vultr容器注册表。

  2. flask-redis-example目录中创建一个Docker清单:

    nano Dockerfile.flask
    登录后复制
  3. 添加以下配置:

    FROM python:3.9-slim
    
    WORKDIR /app
    
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    COPY app.py .
    COPY static/ ./static/
    COPY templates/ ./templates/
    
    EXPOSE 5000
    
    CMD ["python", "app.py"]
    登录后复制

    保存并退出文件。

  4. 构建Docker镜像:

    docker build -t flask-app .
    登录后复制
  5. 登录到您的Vultr容器注册表:

    docker login <url> -u <user> -p <password>
    登录后复制

    请务必替换<url><user><password>,这些详细信息在您的Vultr容器注册表的概述部分提供。

  6. 标记Docker镜像:

    mkdir flask-redis-example
    cd flask-redis-example
    登录后复制
    登录后复制
  7. 将镜像推送到Vultr容器注册表:

    nano app.py
    登录后复制
    登录后复制

    推送Docker镜像后,请在Vultr仪表板上的Vultr容器注册表的“存储库”部分验证镜像是否存在。

  8. 创建一个名为docker-compose.yaml的新文件:

    from flask import Flask, render_template
    import redis
    
    app = Flask(__name__)
    redis_client = redis.Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        count = redis_client.incr('hits')
        return render_template('index.html', count=count)
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)
    登录后复制
    登录后复制

    保存并退出文件。上述YAML配置定义了两个服务webredisweb服务从当前目录(.)构建Flask应用程序,并将容器的端口5000映射到主机的端口5000。它还指定web服务依赖于redis服务。redis服务使用来自Docker Hub的官方Redis Docker镜像。

  9. 构建Docker Compose文件:

    sudo ufw allow 5000
    sudo ufw reload
    登录后复制
    登录后复制

    构建过程完成后,访问http://:5000上的Flask应用程序。尝试多次刷新网站,并观察访问页面次数的计数是否递增。

更多Vultr容器注册表的使用

  • Vultr容器注册表与Docker
  • Vultr容器注册表与Kubernetes
  • 构建vLLM容器镜像
  • 构建Llama.cpp容器镜像
  • 构建PyTorch容器镜像

最佳实践

  • 保持docker-compose.yaml文件井然有序且有良好的文档记录。
  • 使用命名卷来持久化数据,而不是绑定主机目录。
  • 使用环境变量来存储敏感数据,例如密码和API密钥。
  • 使用Docker Compose的内置命令,例如docker-compose updocker-compose downdocker-compose ps来管理容器。

结论

在本文中,您创建了一个包含两个容器的Flask应用程序,使用了Vultr容器注册表来管理应用程序的Docker镜像,并利用了Docker Compose的多容器功能来管理多个容器。

本文由Vultr赞助。Vultr是全球最大的私营云计算平台。Vultr深受开发人员喜爱,已为185个国家的150多万客户提供灵活、可扩展的全球云计算、云GPU、裸机和云存储解决方案。了解更多关于Vultr的信息

以上是Docker和Docker的功能深度构成的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板