专栏首页java干货Docker Compose 官方阅读笔记

Docker Compose 官方阅读笔记

我们将构建一个运行在Docker上的简单的Python Web应用程序。 应用程序使用Flask 框架,并在redis中维护一个计数器。 虽然示例使用python,即使你不熟悉它也没关系。

前言

确保你已经安装了docker enginedocker compose。不需要安装pythonredis,因为两者都是由docker镜像提供的。

如下:

第一步:设置

定义应用程序依赖关系

为该项目创建目录

在项目目录下创建一个名为app.py的文件,并设置内容如下:

在项目目录中创建另一个名为requirements.txt的文件,并设置内容如下:

第二步:创建Dockerfile文件

在这一步中,我们将编写一个构建docker镜像的dockerfile文件。该文件包含python应用程序所需的所有依赖项,也包括python本身。

在我们的项目目录中,创建一个名为dockerfile的文件并粘贴以下内容:

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

命令的解释如下:

  • Python 3.4镜像基础上创建容器
  • 把当前目录添加到容器的/code目录中
  • 将容器的工作目录设置为/code
  • 安装python所需要的依赖
  • 设置容器的默认命令python app.py

第三步:在docker-compose.yml中定义服务

在我们的项目目录下创建一个名为docker-compose.yml的文件并粘贴下面的代码:

version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
    links:
     - redis
  redis:
    image: "redis:alpine"

这个组合文件定义了两个服务,webredisweb服务:

  • 使用从当前目录中的dockerfile构建的容器
  • 将容器上的暴露端口5000转发到主机上的端口5000。我们使用Flask web服务器的默认端口5000。

redis服务使用从docker注册表中心中提取的公共redis映像.

目录结构如下:

第四步:构建和运行我们的应用程序

  1. 从我们的项目目录中,通过运行docker-compose up启动您的应用程序.如下:

docker-compose.yml文件拉去Redis镜像,构建我们的镜像并启动服务。

  1. 在浏览器中输入http://localhost:5000/,浏览器回输出以下消息
Hello World! I have been seen 1 times.
  1. 刷新页面数字会递增
Hello World! I have been seen 2 times.
  1. 开启另一个终端使用 docker images 列出镜像。
  1. 停止应用程序,通过在第二个终端的项目目录中运行docker-compose down,或者在启动应用程序的原始终端中按ctrl + c

第五步:修改docker-cmopose.yml 添加挂载目录 如下:

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

volumes 关键字挂在当前目录到容器的/code,允许我们即时修改代码,而无需重新生成镜像。

第六步:重新构建并运行应用程序

从项目目录中输入docker-compose up,然后用已更新的文件构建应用程序,运行它

$ docker-compose up
Creating network "composetest_default" with the default driver
Creating composetest_web_1 ...
Creating composetest_redis_1 ...
Creating composetest_web_1
Creating composetest_redis_1 ... done
Attaching to composetest_web_1, composetest_redis_1
web_1    |  * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
...

再次在Web浏览器中查看hello world消息,然后刷新以查看有没有递增。

第七步:更新应用程序

由于应用程序代码现在使用数据卷挂载到容器中,因此可以更改本地代码并立即查看更改后效果,而无需重新生成镜像。

  1. 更改app.py Hello World!Hello from Docker!:
return 'Hello from Docker! I have been seen {} times.\n'.format(count)
  1. 刷新浏览器,Hello World!更新成Hello from Docker 数字依旧递增

第八步:扩展其它命令

如果你想在后台运行你的服务,可以使用 -d 参数,并且可以使用docker-compose ps查看当前运行的服务。

$ docker-compose up -d
Starting composetest_redis_1...
Starting composetest_web_1...

$ docker-compose ps
Name                 Command            State       Ports
-------------------------------------------------------------------
composetest_redis_1   /usr/local/bin/run         Up
composetest_web_1     /bin/sh -c python app.py   Up      5000->5000/tcp

docker-compose run命令允许为服务运行一次性命令。例如,查看哪些环境变量可用于Web服务

 docker-compose run web env

可以参阅docker-compose --help以查看其他可用的命令。

如果开始使用docker-compose up -d运行服务,则可以使用 docker-compose stop 命令停止服务运行。

$ docker-compose stop

你可以把所有服务停下,用down命令完全移除容器。通过--volumes还删除redis容器使用的数据卷:

$ docker-compose down --volumes

翻译链接:https://docs.docker.com/compose/gettingstarted/#step-8-experiment-with-some-other-commands

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • (2021)自建RSS阅读器Tiny Tiny RSS教程,docker安装Awesome TTRSS

    Tiny Tiny RSS 是一款基于 PHP 的免费开源 RSS 聚合阅读器,是目前自己搭建RSS订阅器选择比较多的一种方式,奶爸建站笔记之前分享的是通过源码...

    子润先生
  • 仅在 localhost 中部署并使用 RSSHub

    由于部分网站严格的反爬机制、再加上大量使用带来的计算压力,RSSHub 鼓励用户自建使用。但如果你也有自建 RSS 阅读器习惯、且部署 RSSHub 也只是为了...

    幻影龙王
  • ChirpStack 笔记 1.1 使用 Docker-Compose 快速部署 ChirpStack 项目

    17年的时候曾经写过一篇类似笔记,Docker实战 LoRaServerProject,由于年代久远,现在 ChirpStack 已经发生了很大的变化,所以在1...

    twowinter
  • Docker Compose笔记 02 安装笔记

    在Docker Compose笔记 01 基础介绍中已经介绍了Docker Compose,这节讲讲安装方法,比较简单,都在https://docs.docke...

    twowinter
  • windows10下成功安装docker

    1.进入官方网站安装:https://docs.docker.com/docker-for-windows/install/

    py3study
  • docker-compose安装

    在安装docker-compose之前必须先检查是否已经安装好了docker。具体安装教程可阅读 docker学习笔记之一 安装。

    魔王卷子
  • Docker 小记 — Docker Engine

    捷义
  • Centos 7 在线安装 离线安装 最新 Docker-compose 的正确姿势 实践笔记

    系统:Centos 7 64bit ##还没装docker的,先移步安装官方最新docker

    cookily
  • 如何在Kubernetes开发微服务

    问卷链接(https://www.wjx.cn/jq/97146486.aspx)

    CNCF
  • Docker入门教程 Part 3 Services

    本篇笔记是官方Get Started入门教程的Part3 Services,主要演示如何使用 docker-compose.yml 来定义应用服务,docker...

    twowinter
  • 群晖NAS上搭建huginn

    群晖的 Docker 是 Docker GUI 中对一般用户体验最好的。简直无敌。

    huginn 中文网
  • ​使用Docker Compose一条指令设置Mesos

    如果你还没有使用过的Docker,你一定要试一试。纯粹的功能和质朴的用户体验将让你感到惊奇。在这篇文章中,我将告诉你如何通过Docker Compose来设置一...

    Techeek
  • docker安装官方redis集群并集群连接测试 的正确姿势 自用 实践笔记

    没装docker的同学,请移步【Centos 7 安装最新 Docker 的正确姿势 并实现阿里云加速 网易加速 实践笔记】的文章 没装docker-comp...

    cookily
  • Docker Compose笔记 01 基础介绍

    日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。Compose 恰好满足了这样的需求。它允许用户通过一个单独的 dockercompose.ym...

    twowinter
  • Docker入门教程 Part 2 容器操作

    日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。Compose 恰好满足了这样的需求。它允许用户通过一个单独的 dockercompose.ym...

    twowinter
  • 【译】使用Docker Compose一条指令配置Mesos

    原文作者:Sebastien Goasguen 原文地址:https://dzone.com/articles/1-command-to-mesos-with-...

    李郑
  • Dgraph安装和使用(一)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

    hotqin888
  • Kraker:一款功能强大的分布式密码爆破系统

    Kraker是一款功能强大的分布式密码爆破系统,它允许我们在不同的服务器和工作站上轻松运行和管理hashcat。该工具使用起来非常简单,其设计意图主要有两点,即...

    FB客服
  • 如何连接Docker容器

    使用Docker来容纳应用程序时,通常的做法是在单独的容器中运行应用程序的每个组件。例如,一个网站可能有一个Web服务器,应用程序和数据库,每个都在自己的容器中...

    大大刺猬

扫码关注云+社区

领取腾讯云代金券