Dokcer14_3:Docker Compose使用

Docker Compose使用教程官方网址:https://docs.docker.com/compose/gettingstarted/

1.为项目创建一个存放目录

 mkdir composetest
 cd composetest

2.构建一个应用,app.py

新建app.py文件。app.py代表python的一个应用程序,直接粘贴下面代码即可,是一个访问计数的简易功能。

import time

import redis
from flask import Flask

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

def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)

@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)

在项目目录中创建另一个名为requments.txt的文件

flask
redis

3.构建Dockerfile(之前Dockerfile打包镜像,再run的就是单机玩一下)

FROM python:3.7-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requments.txt
CMD ["python", "app.py"]

命令解析:

  • 从Python3.7映像开始构建一个映像。
  • 将当前目录.添加到/code镜像中的路径。
  • 设置环境变量。
  • 安装GCC和其他依赖项
  • 复制requments.txt,并安装Python依赖项。
  • pip方式去运行,暴露端口5000。
  • 复制当前目录到镜像工作目录。
  • 将容器的默认命令设置为 flask run。

创建docker-compose.yml(定义整个服务,需要的环境。web、redis):完整的项目上线服务

version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

这个docker-compose yaml文件定义了两个服务:web和redis。

通过命令docker-compose up来启动

流程:

  1. 创建网络
  2. 执行docker-compose yaml文件
  3. 启动服务
    docker-compose yaml
    Creating test_redis_1 … done(这里输出的是服务名字)
    Creating test_web_1 … done

在这里插入图片描述
默认的服务名称规则:文件目录_服务名_num
数字就是用来区分集群部署的,因为服务不可能只有一个实例,都是进群部署的,这样才能保证高可用性(HA),一台宕机不影响程序正常运行。

在这里插入图片描述
可以看到多了一个网络,test_default,这个就是docker-compose.yml中定义的服务,会自动分配到同一网络来保证网络的连通。
这样,同一网络下,可以直接通过域名来访问,比如redis:6379,不需要你关心重新拉取之后ip变掉,因为你使用域名访问的。

停止compose

docker-compose down或者ctrl + c。

compose作用

以前都是单个docker run启动容器
docker-compose通过编写docker-compose.yml配置文件,可以通过docker-compose up来一键启动、停止所有服务。

Docker是一种容器化技术,可以在不同的操作系统上运行应用程序。Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。 以下是一些常用的DockerDocker Compose命令: ### Docker - `docker run`: 运行一个Docker容器。 - `docker ps`: 列出正在运行的Docker容器。 - `docker images`: 列出所有本地镜像。 - `docker build`: 使用Dockerfile构建一个Docker镜像。 - `docker push`: 将本地镜像上传到Docker Hub或其他Docker镜像仓库。 - `docker pull`: 从Docker Hub或其他Docker镜像仓库中下载一个镜像。 - `docker rm`: 删除一个或多个Docker容器。 - `docker rmi`: 删除一个或多个本地Docker镜像。 ### Docker Compose - `docker-compose up`: 构建并启动一个Docker Compose应用。 - `docker-compose down`: 停止并删除一个Docker Compose应用。 - `docker-compose ps`: 列出正在运行的Docker Compose服务。 - `docker-compose logs`: 查看一个Docker Compose服务的日志。 - `docker-compose exec`: 在一个Docker Compose服务中执行一个命令。 - `docker-compose build`: 构建一个Docker Compose服务的镜像。 - `docker-compose pull`: 下载一个Docker Compose服务的镜像。 ### Docker Compose配置文件 Docker Compose使用YAML格式的配置文件来定义多容器Docker应用程序。以下是一个示例配置文件: ``` version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine" ``` - `version`: 定义配置文件使用Docker Compose版本。 - `services`: 包含一个或多个Docker容器服务的列表。 - `build`: 构建一个Docker镜像。 - `image`: 使用现有的Docker镜像。 - `ports`: 映射容器端口到主机端口。在此示例中,容器的5000端口将映射到主机的5000端口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值