首页 > 其他分享 >Docker Compose 学习笔记

Docker Compose 学习笔记

时间:2024-09-26 16:45:37浏览次数:1  
标签:web Compose app redis 笔记 compose Docker docker

Docker Compose 学习笔记

Docker Compose 安装

安装完 Docker Engine 后,以插件方式安装 Docker Compose:

  1. 设置安装源
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装 Compose plugin
sudo yum update
sudo yum install docker-compose-plugin

实例

在这里,我们将创建一个 Web 应用程序,该实例参考 Docker Compose 官方文档,有两个服务,并做了一些改变。

本实验需要两个容器:

  • Web 容器:提供 Web 服务,并连接后端的 Redis 服务。
  • Redis 容器:提供 Redis 服务,接收 Web 容器的连接。

其文件目录结构如下所示:

app
|----web
| |----web.py
| |----requirements.txt
| |----Dockerfile
|
|----docker-compose.yml

相关文件

~/app/web/web.py

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)

@app.route('/')
def hello():
    redis.incr('number')
    return 'Hello Shiyanlou! # %s' % redis.get('number')

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

上述代码创建一个十分简单的 Web 应用程序。该程序会连接 Redis 服务,在访问 / 页面时,会自动将变量 number 加 1。

~/app/web/requirements.txt

flask==1.1.4
redis==3.5.3
markupsafe==2.0.1

~/app/web/Dockerfile

FROM python:3.8
COPY ./ /web/
WORKDIR /web
RUN pip install -r requirements.txt
CMD python web.py

上述 Dockerfile 定义了一个镜像,该镜像基于 python:3.8 镜像制作,在其基础上安装相应的 Python 包,并执行 CMD 命令来启动该应用程序。

~/app/docker-compose.yml

services:
  redis:
    image: redis:6.0
  web:
    build:
      context: /home/shiyanlou/app/web
    depends_on:
      - redis
    ports:
      - 8001:80/tcp
    volumes:
      - /home/shiyanlou/app/web:/web:rw
version: "3.0"

该 docker-compose.yml 文件定义了两个服务,分别为 web 和 redis 服务。配置了 web 服务的端口映射,以及挂载相应的目录。 depends_on 定义了依赖关系,被依赖服务的容器需要先创建。

进入 app 目录下,执行 docker-compose up 命令来启动服务:

启动 compose

cd app
docker-compose up

由于此时 web 服务的镜像还未构建,所以此时会自动根据 build 指示,使用 /home/shiyanlou/app/web/Dockerfile 文件构建镜像。

除此之外,也可以使用 -d 参数,即 docker-compose up -d 在其在后台运行:

如果需要暂停以及删除容器,可以直接运行 docker-compose down 命令即可。

标签:web,Compose,app,redis,笔记,compose,Docker,docker
From: https://www.cnblogs.com/yangxuanzhi/p/18433708

相关文章

  • VScode开发STM32笔记(一)生成bin文件
    操作步骤软件条件1、基于stm32-for-vscode工具开发;2、项目处于打开状态,且生成elf文件;具体的安装环境详见文档:https://blog.csdn.net/weixin_42435984/article/details/141894449具体操作1、通过VScode打开对应的STM32项目;2、使用stm32-for-vscode工具对其进行编译;3......
  • Java基础-学习笔记18
    18反射1.反射机制反射机制允许程序在执行期借助于ReflectionAPI取得任何类的内部信息(比如成员变量、构造器、成员方法等等),并能操作对象的属性及方法。反射在设计模式和框架底层都会用到;加载完类之后,在堆中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对......
  • SPSS26统计分析笔记——7 回归分析
    1回归方程        回归方程一般表达式:y=f(x......
  • html基础笔记
    行级元素和块级元素<!--行内块级元素--><!--1、能设置宽高--><!--2、能呆在一行--><!--常见的行内块级元素:img表单inputtextareaselect--><!--块级元素--><!--1、能设置宽高--><!--2、不和其他元素呆在同一行,霸占一行--><!--常见的块级元素:divpull......
  • Docker实践与应用
    引言在现代软件开发中,Docker以其独特的容器化技术正在迅速改变传统的应用部署方式。Docker不仅提供了应用的便携性和一致性,还有效地解决了环境配置问题。本文将深入探讨Docker的安装、使用、最佳实践及其在实际项目中的应用,帮助开发者更好地理解和利用Docker。1.Docker概述......
  • Arthas学习笔记
    一、运行环境操作系统:centos7.9Java版本:jdk1.8.201arthas版本:3.6.9二、安装Arthas并attach一个进程curl-Ohttps://alibaba.github.io/arthas/arthas-boot.jarcurl-Ohttps://alibaba.github.io/arthas/arthas-demo.jarjava-jararthas-demo.jar#先启动Javademo进程......
  • FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
    EasyPusher是一款国产的RTSP直播录制推流客户端工具,它支持Windows、Linux、Android、iOS等操作系统。EasyPusher采用RTSP推流协议,其中安卓版EasyPusher的Github托管地址为https://github.com/EasyDarwin/EasyPusher-Android。不过EasyPusher有好几年没更新了,尤其安卓版的EasyPusher......
  • 【java笔记】 5 接口使用举例
    //导入Swing库中的消息对话框组件importjavax.swing.*;//定义一个Circle类,该类实现了ShapeInterface接口publicclassCircleimplementsShapeInterface{//定义一个私有变量radius来保存圆的半径privatedoubleradius;//默认构造函数,初始化一个半径为0的圆p......
  • docker部署jumpserver及入门
    一、环境及要求环境:CentOSLinux7.9jumpserverv2.28.6要求LinuxKernel:>=4.0 MySQL:>=5.7#官方使用MariaDB10.6对照MySQL8.0Redis:>=5.0#不支持cluster模式官方使用Redis6.2SoftRequirement:wgetcurltargettextiptablespythone二、依赖安装1.MySQL......
  • prometheus学习笔记之服务发现kubernetes_sd_configs
    一、prometheus的服务发现机制prometheus默认是采用pull方式拉取监控数据的,也就是定时去目标主机上抓取metrics数据,每一个被抓取的目标需要暴露一个HTTP接口,prometheus通过这个暴露的接口就可以获取到相应的指标数据,这种方式需要由目标服务决定采集的目标有哪些,通过配......