程序笔记   发布时间:2022-07-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Docker笔记(进阶篇)— Docker Compose大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Docker Compose

1、简介

@H_674_10@官方介绍

@H_674_10@Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose, see the list of features.

  • 如何定义、运行多个容器
  • YAML file 配置文件
  • single commend 有哪些
@H_674_10@Compose works in all environments: production, staging, development, tesTing, as well as CI workflows. You can learn more about each case in Common Use Cases.

  • 所有的环境都可以使用Docker Compose
@H_674_10@Using Compose is basically a three-step process: 使用的三个步骤

  1. @H_674_10@Define your app’s environment with a Dockerfile so it can be reproduced anywhere.

    @H_674_10@Dockerfile 保证我们的项目(app)可以在任何地方运行

  2. @H_674_10@Define the services that make up your app in docker-compose.yml so they can be run together in an isolated environment.

    @H_674_10@进行配置服务在YAML配置文件当中

  3. @H_674_10@Run docker compose up @R_197_6296@e Docker compose command starts and runs your entire app. You can alternatively run docker-compose up using the docker-compose binary.

    @H_674_10@启动我们的项目(app)

@H_674_10@总结:批量的容器编排 ࿰c;可以管理多个服务(容器)

@H_674_10@Compose 是Docker官方的一个开源项目࿰c;所以需要安装

@H_674_10@配置文件:docker-compose.yml

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}
@H_674_10@我们的任务就是编写这样一个配置文件࿰c;管理我们的多个服务(容器)

@H_674_10@实现通过docker-compose up 同时启动多个服务

2、安装 Compose

@H_674_10@地址:https://docs.docker.com/compose/install/

@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@1、下载Docker-Compose

#安装在Linux系统中
csudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#安装太慢的 把github源换成get.daocloud.io
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
@H_674_10@去到安装目录检查:下载成功!

@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@2、设置文件可执行权限

 sudo chmod +x /usr/local/bin/docker-compose
@H_674_10@3、查看版本信息

docker-compose -version
@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@4、卸载Docker-Compose

sudo rm /usr/local/bin/docker-compose

3、快速体验Docker Compose

@H_674_10@参文档:https://docs.docker.com/compose/getTingstarted/

@H_674_10@1、创建目录࿰c;所有操作都在这个目录下进行

 @H_603_163@mkdir composetest
 cd composetest
@H_674_10@2、创建一个py应用࿰c;(类似统计浏览次数,计数器)

import time
				
import redis				#导入了我们的redis
from flask import Flask		#导入了我们的Flask(python的一个框架依赖)

app = Flask(__name__)
cache = redis.redis(host=@R_607_6285@edis', 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)
@H_674_10@3、创建一个配置文本requirements.txt

flask
redis
@H_674_10@4、创建Dockerfile

# syntax=docker/dockerfile:1
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
@H_674_10@5、创建docker-compose.yml

version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"
@H_674_10@6、启动

docker-compose up
@H_674_10@启动成功!

@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@测试结果

@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@hh࿰c;一键启动两个应用确实舒服!

4、Docker Compose默认配置

@H_674_10@1、自动下载配置文件docker-compose.yml中的镜像

@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@2、自动生服务名字 文件名_服务名 _num

StarTing composetest_web_1   ... done   #web服务
StarTing composetest_redis_1 ... done	#redis服务
@H_674_10@3、网络规则

@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@默认会生成一个网络࿰c;10个服务=>网络(项目中的内容都在同一个网络下࿰c;容器名访问)

@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@在同一个网络下可以直接通过容器名(域名)访问

@H_674_10@4、停止

  • docker-compose down :需要在compose的yaml配置文件目录执行࿰c;不然是找不到的!
  • ctrl + c
@H_674_10@小节

@H_674_10@1、Docker镜像࿰c;run ==> 容器

@H_674_10@2、Dockerfile构建镜像(服务打包)

@H_674_10@3、docker-compose启动项目(编排࿰c;多个微服务/环境)

@H_674_10@4、Docker网络!

@H_674_10@5、项目需要更新࿰c;docker compose up --build 即可

5、Compose编写配置规则

@H_674_10@参文档 : https://docs.docker.com/compose/compose-file/compose-file-v3/

@H_674_10@核心:编写 docker-compose.yaml

#3层
version: ''  #版本
services: 	 #服务
	服务1: web
		#服务配置 docker容器的配置  
		images: 
		build: 
		network:
		depends_on:       #depents_on: web服务依赖redis和MySQl,让他们先启动!(这就是编排的原因)
			-redis
			-@H_710_72@mysql
	服务2: redis
		...
	服务2: mysql
		...
#其他配置  网络/卷、全局规则
volumes: 
network:
configs:
@H_674_10@1、版本选择

@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@2、服务相关配置

@H_674_10@

Docker笔记(进阶篇)— Docker Compose

6、Compose一键部署WP博客

@H_674_10@参文档 :https://docs.docker.com/samples/wordpress/

@H_674_10@1、创建目录并进入目录

@H_603_163@mkdir my_wordpress/
cd my_wordpress/
@H_674_10@2、编写docker-compose.yml

version: "3.9"
    
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      @H_659_71@mYSQL_ROOT_password: somewordpress
      @H_659_71@mYSQL_DATABASE: wordpress
      @H_659_71@mYSQL_USER: wordpress
      @H_659_71@mYSQL_password: wordpress
    
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    volumes:
      - wordpress_data:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_password: wordpress
      WORDPRESS_db_name: wordpress
volumes:
  db_data: {}
  wordpress_data: {}
@H_674_10@3、我们服务器的8000端口放行

@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@4、启动Compose

docker-compose up -d
@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@5、检测容器是否启动

docker ps
@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@6、访问测试:http://qxsong.top:8000/(自己的ip+8000端口)

@H_674_10@

Docker笔记(进阶篇)— Docker Compose

@H_674_10@收工!!!

大佬总结

以上是大佬教程为你收集整理的Docker笔记(进阶篇)— Docker Compose全部内容,希望文章能够帮你解决Docker笔记(进阶篇)— Docker Compose所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。