dockercompose(代码片段)

Bigberg Bigberg     2022-10-21     340

关键词:

官方文档:https://docs.docker.com/compose 

一、介绍

  Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。是用来定义和运行多个Docker容器应用的工具,它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。 

Compose 中有两个重要的概念:

  • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

  Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。

二、Linux 安装

curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod a+x /usr/local/bin/docker-compose  
docker-compose -version
docker-compose version 1.19.0, build 9e633ef

 

三、启动一个项目

3.1 编写一个yaml文件

pwd
/home/bigberg/docker/compose-test

# 编写yaml文件
vim docker-compose.yml

version: \'3\'
services:
  web:
    build: .
    ports:
      - "8888:80"


# version :  需要和docker 版本相匹配

# services : 定义组中的容器和服务等

# web : 容器镜像服务的标识,通过这个标识来管理镜像

# build .  :  构建镜像的目录

# ports : 映射的端口

version 对应的docker版本:

  

3.2 编写一个Dockerfile文件   

FROM centos
MAINTAINER bigberg
RUN yum -y install httpd php php-gd php-mysql
RUN echo "<?php phpinfo()?>" > /var/www/html/index.php
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
EXPOSE 80

 

 3.3 构建镜像

docker-compos up

  构建完成后查看:

 docker-compose ps
      Name                     Command              State          Ports        
--------------------------------------------------------------------------------
composetest_web_1   /usr/sbin/httpd -D FOREGROUND   Up      0.0.0.0:8888->80/tcp

  访问地址:(项目确实起来了)

  

 

四、python-web事例

  4.1 定义应用的一些依赖

  创建文件夹   

mkdir -p compose-test/python-test
cd compose-test/python-test

  创建一个app.py文件

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)

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

  在app.py中,host=\'redis\' 中redis 是 redis 容器的主机名,在这个项目的网络中可以被解析

Name:      redis
Address 1: 172.20.0.3 625eb281eafd

  创建一个requirements.txt文件

flask
redis

  4.2 创建一个Dockerfile  

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
  • 构建使用的python:3.4-alpine镜像
  • 将当前目录添加到镜像中/code目录
  • 设置工作目录为 /code
  • 安装python依赖
  • 设置容器启动运行命令为 python app.py

  4.3 创建docker-compose.yml 文件

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

  这个ymal文件有两个服务:web 和 redis

  web服务:

  • 构建使用Dockerfile中定义的镜像
  • 映射端口5000到宿主机端口5000,也就是flask web的默认端口

  redis服务:

  • 构建使用的是Docker Hub中公共Redis镜像

  4.4 构建项目

docker-compose up

  4.5 访问项目

  

  每次刷新,访问的次数会增长

  4.6 修改ymal文件,将目录挂在到镜像中

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

  通过volumes 将当前目录挂在到镜像中的 /code目录,这个就可以在宿主机目录中修改文件,容器中也会生效,不必每次修改都要重新构建

  4.7 重新docker-compose up  

docker-compose up

  

 

  4.8 修改app.py文件  

Hello world!
改为

Hello from Docker!

  

 

hellodocker——dockercompose(代码片段)

HelloDocker(九)——DockerCompose一、DockerCompose简介1、DockerCompose简介DockerCompose项目是Docker官方的开源项目,用于在单台服务器或主机上对多个Docker容器快速编排。DockerCompose将所管理的容器分为三层,分别是工程(project),服务(... 查看详情

docker------dockercompose编排(代码片段)

目录前言一.Docker-compose简介二.Compose部署1.DockerCompose环境安装2.YAML文件格式及编写注意事项3.DockerCompose配置常用字段4.DockerCompose常用命令5.DockerCompose文件结构三.使用Compose编排创建Nginx容器1.准备依赖文件2.编写配置文件docker-compose... 查看详情

docker------dockercompose编排(代码片段)

目录前言一.Docker-compose简介二.Compose部署1.DockerCompose环境安装2.YAML文件格式及编写注意事项3.DockerCompose配置常用字段4.DockerCompose常用命令5.DockerCompose文件结构三.使用Compose编排创建Nginx容器1.准备依赖文件2.编写配置文件docker-compose... 查看详情

dockercompose编排(写法格式及实验)(代码片段)

目录一、DockerCompose前言二、Dockercompose的文件结构1、dockercompose配置常用字段2、dockercompose常用命令三、使用compose编排1、使用compose编排安装运行tomcat容器2、使用compose编排创建容器(以tomcat为例)一、DockerCompose前言DockerCo... 查看详情

markdown安装dockercompose(代码片段)

查看详情

dockercompose部署(代码片段)

dockercompose部署————资源控制[root@localhost~]#dockernetworklsNETWORKIDNAMEDRIVERSCOPE4946cb00240cbridgebridgelocal7ad0dfddaa0fhosthostlocal906f0be0af7cnonenulllocal#自定义网络固定IPdockernetworkcreate--subnet=172 查看详情

dockercompose,dockerswarm(代码片段)

文章目录DockerCompose安装体验yaml规则开源项目DockerSwarmDockerCompose介绍:使用DockerCompose来高效管理容器,定义启动多个容器批量容器编排Compose是Docker官方的开源项目。需要安装Dockerfile让程序在任何地方运行。Compose.ymlversion... 查看详情

dockercompose安装(代码片段)

...用,而这些docker容器可能运行在多个不同的宿主机上。2.DockerCompose是一个比较简单的docker容器的编配工具,以前的名称叫Fig,由Orchard团队开发的开源Docker编配工具,在2014年被Docker公司收购,DockerCompose是使用 查看详情

sh安装docker和dockercompose(代码片段)

查看详情

详解dockercompose,consul!!(代码片段)

DockerCompose的前身是Fig,它是一个定义及运行多个Docker容器的工具。使用DockerCompose不再需要使用ShellI脚本来启动容器DockerCompose非常适合组合使用多个容器进行开发的场景。Consul是HashiCor公司推出的开源工具,用于实现分布式系... 查看详情

附003.dockercompose命令详解(代码片段)

一 DockerCompose命令格式1Usage:2docker-compose[-f<arg>...][options][COMMAND][ARGS...]3docker-compose-h|--help二 DockerCompose命令参数及解释1Usage:2docker-compose[-f<arg>...][options][COMMAND][ARGS...]3 查看详情

dockercompose实例(代码片段)

采用java-jar启动nohupjava-jarweb-0.0.1-SNAPSHOT.jar--spring.profiles.active=test--server.port=8091&采用DockerCompose启动myweb:##启动容器的名字image:web:v826##从哪个镜像启动ports:-"8088:8091"##web容器内的8091端口映射到主机的8088端口l 查看详情

010.dockercompose构建wordpress实战(代码片段)

...MySQL数据库5.7Docker已安装,参考《002.Docker版本及安装》。DockerCompose已安装,参考《009.DockerCompose基础使用》。二 正式构建2.1 创建目录1[email protected]:~#mkdirmy_wordpress2[email protect 查看详情

dockercompose安装使用教程(代码片段)

DockerCompose一、安装DockerCompose#Compose目前已经完全支持Linux、MacOS和Windows,在我们安装Compose之前,需要先安装Docker。下面我们以编译好的二进制包方式安装在Linux系统中。curl-Lhttps://github.com/docker/compose/releases/download/1.22.0/d 查看详情

dockercompose(代码片段)

文章目录什么是compose安装composelinux版docker-compose启动docker-compose文件(模板)docker-compose文件参考文档versionservicesbuild(从给定Dockerfile文件构建)container_nameimageports(映射端口)envi 查看详情

sh在coreos上安装dockercompose(代码片段)

查看详情

sh在coreos上安装dockercompose(代码片段)

查看详情

dockercompose(代码片段)

文章目录什么是compose安装composelinux版docker-compose启动docker-compose文件(模板)docker-compose文件参考文档versionservicesbuild(从给定Dockerfile文件构建)container_nameimageports(映射端口)envi 查看详情