Docker-compose入门教程

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 前言Docker-compose是一个定义和运行多个Docker应用的工具,你可以使用YMAL文件来配置你的服务,然后使用docker-compose命令,创建和启动所有你配置的的服务。

前言

Docker-compose是一个定义和运行多个Docker应用的工具,你可以使用YMAL文件来配置你的服务,然后使用docker-compose命令,创建和启动所有你配置的的服务。compose可以在任何工作环境中使用,生产环境,开发环境,持续集成等等。


img_56807ec4d2c7c362f952653ebe4b0101.png
Docker

使用compose一般包括三个步骤:

  1. 使用Dockerfile定义App的环境,以便于可再次重复利用
  2. docker-compose.yml文件中定义服务,以便于多个Docker应用可以协作起来
  3. 最后,运行docker-compose up,然后compose回启动和运行整个App。

操作

确保你已经安装了Docker和Docker compose。

设置
  1. 创建目录
mkdir composetest
cd composetest
  1. 创建app.py文件,python文件有严格的行缩进关系。如果缩进不一样会报错。
from flask import Flask
from redis import Redis

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

@app.route('/')
def hello():
    count = redis.incr('hits')
    return 'Hello From Aihe! I have been seen {} times.\n'.format(count)

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)
  1. 创建另外一个依赖文件requirements.txt,python的依赖关系。
flask
redis
创建Dockerfile文件

内容如下

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
在compose文件定义服务

文件内容如下

version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
    volumes:
     - .:/code

  redis:
    image: "redis:alpine"

这个文件包含两个服务,webredis
web服务

  • Build 使用Dockerfile来构建镜像
  • Ports 主机转发5000端口到容器对应的5000端口
  • Volumes 挂载当前目录到容器内的/code目录下,我们可以直接修改本地文件,然后容器内会立即生效
构建和运行app
  1. 在当前目录下运行docker-compose up
    当前目录结构为


    img_afd169fbb60fdd3a77fc18ecb9e69fac.png
    当前目录内容
docker-compose up
  1. 在浏览器中输入http://localhost:5000/

img_f939bb4e304d1ba1869b0650329ee968.png
测试结果

我们可以以修改app.py文件中return的内容,可以看到浏览器立即生效。

额外

  1. 在配置的过程中,可能compose文件配置有错误,到底第一次无法启动服务。这时候重新构建服务。
docker-compose build --no-cache
  1. 后台运行与停止compose服务
docker-compose up -d
docker-compose stop

最后

Docker确实给我们提供了极大的便利,使用的过程发现有以下好处

  • 本地环境无需更改,直接使用Docker容器做测试
  • 搭建集群直接使用容器,一台机器也可以完成

这里简单的介绍了docker-compose的用法,希望能对大家有帮助。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
25天前
|
存储 机器学习/深度学习 中间件
快速上手 Elasticsearch:Docker Compose 部署详解
本文介绍了如何使用Docker Compose快速搭建Elasticsearch学习环境。Elasticsearch是一款用于实时搜索和分析的分布式中间件,适用于多种场景,如搜索、日志分析、机器学习等。首先,创建docker网络,拉取最新版8.12.2镜像。接着,编写docker-compose.yml文件,配置单节点集群,设置端口映射、内存限制及数据卷挂载。然后,创建并配置数据卷目录,允许远程访问和跨域。最后,启动服务并验证,通过浏览器访问确认服务运行正常。本文为初学者提供了一个简便的Elasticsearch部署方法。
140 4
快速上手 Elasticsearch:Docker Compose 部署详解
|
30天前
|
关系型数据库 MySQL Java
Docker Compose详细教程(从入门到放弃)
Docker Compose详细教程(从入门到放弃)
126 0
|
3月前
|
存储 数据可视化 数据安全/隐私保护
使用 Docker Compose 部署 Docker Registry
【1月更文挑战第2天】 在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,Docker Registry成为了我们的救星。Docker Registry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署Docker Registry,您可以轻松地构建、存储和分享自己的Docker镜像。
148 3
使用 Docker Compose 部署 Docker Registry
|
4月前
|
Kubernetes 关系型数据库 MySQL
Docker Compose入门:打造多容器应用的完美舞台
Docker Compose 是一个强大的工具,它允许开发者通过简单的 YAML 文件定义和管理多容器的应用。本文将深入讨论 Docker Compose 的基本概念、常用命令以及高级应用场景,并通过更为丰富和实际的示例代码,助您轻松掌握如何通过 Docker Compose 打造复杂而高效的多容器应用。
|
1月前
|
Java Docker 微服务
如何使用Docker和Docker Compose部署微服务
【2月更文挑战第12天】
195 0
|
4月前
|
应用服务中间件 Linux nginx
Docker Compose 安装与使用(常用指令)
Docker Compose 安装与使用(常用指令)
222 0
|
4月前
|
前端开发 Docker Windows
Windows 安装 Docker Compose
Windows 安装 Docker Compose
|
2月前
|
Docker 容器
Docker Compose的安装与配置
Docker Compose的安装与配置
125 2
Docker Compose的安装与配置
|
2月前
|
存储 监控 Serverless
Serverless应用引擎(SAE)不支持直接通过Docker Compose进行部署
【2月更文挑战第8天】Serverless应用引擎(SAE)不支持直接通过Docker Compose进行部署
262 1
|
2月前
|
消息中间件 运维 应用服务中间件
容器化运维:构建高可用RabbitMQ集群的Docker Compose指南
容器化运维:构建高可用RabbitMQ集群的Docker Compose指南
153 0