Docker[6]-.DockerCompose

news2024/11/18 3:36:04

1 DockerCompose介绍

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

一键启动所有的服务

DockerCompose的使用步骤

  • 创建对应的DockerFile文件

  • 创建yml文件,在yml文件中编排我们的服务

  • 通过docker-compose up命令 一键运行我们的容器

2 Compose安装

官网地址:Overview | Docker Documentation

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

速度比较慢的话使用下面的地址:

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
​

修改文件夹权限

chmod +x /usr/local/bin/docker-compose

建立软连接

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

校验是否安装成功

docker-compose --version

3 Compose初体验

通过官方案例来演示:Try Docker Compose | Docker Documentation

创建对应的目录

 mkdir composetest
 cd composetest

创建Python文件 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)

在同级目录下创建requirements.txt文件

flask
redis

然后创建对应的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"]

然后创建核心的 yml文件docker-compose.yml

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

最终通过docker-compose up命令来启动容器

docker-compose up

 

 

 

启动时间比较久,耐心等待即可

测试访问:

 

如果要退出服务 Ctrl+c 或者 docker-compose down

4 Compose配置规则

docker-compse.yml核心

官网地址:Compose file version 3 reference | Docker Documentation

version: '' # 版本
servers:  # 服务
  服务1: web
     # 服务的配置
     build
     network
     images
  服务2: redis
  服务3:
  服务4:
  ...
# 其他配置 网络,全局的规则 数据卷
volumes:
configs:
networks:

5 Compose一键部署实战

1 一键部署WP博客

1> 创建my_wordpress目录

mkdir my_wordpress

2>创建yml文件docker-compose.yml

version: "3.9"
    
services:
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      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: {}

3>通过up命令启动

docker-compose up -d

 

 

 6.部署一个SpringBoot项目

我们自己通过Java项目实现访问计数的功能

FROM java:8
COPY my-counter-views-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
CMD ["java","-jar","app.jar"]

yml

version: '3.9'
services:
  myapp:
    build: .
    image: myapp
    depends_on:
      - redis
    ports:
      - "8080:8080"
  redis:
    image: "library/redis:alpine"

7 Compose常见操作

(1)查看版本

docker-compose version

(2)根据yml创建service

docker-compose up

指定yaml:docker-compose up -f xxx.yaml

后台运行:docker-compose up -d

(3)查看启动成功的service

docker-compose ps

也可以使用docker ps

(4)查看images

docker-compose images

(5)停止/启动service

docker-compose stop/start

(6)删除service[同时会删除掉network和volume]

docker-compose down

(7)进入到某个service

docker-compose exec redis sh

8 scale扩缩容

docker-compose up --scale web=5 -d

 

小结:docker-compose

工程-->服务-->容器

version:
services:
  服务1:
  服务2:
  服务3:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL基础知识

一、数据库相关的简单命令 1、显示数据库 show databases; 2、创建数据库 create database 数据库名 character set 字符集 collate 指定字符集的校验规则; 注意: 数据库名应尽量避免使用关键字,如必须使用则需添加(倒引号);未…

欧洲的历史都经历了哪些时代?

欧洲历史起源于古希腊和罗马,后面分化出了法、意、德;经过罗马时代中世纪时期的黑暗后,欧洲觉醒出现文艺复兴,使欧洲开启了巨大的创造力。后面的大航海时代欧洲开始向外拓展势力范围,疯狂殖民,英国成为最大…

初级测试工程师(能找到工作的水平就行)1、学多久2、学什么?

看到这个主题,我认为自己还有点发言权吧。 我是普通二本院校的垫底学渣,全班成绩倒数第三,并且还是非计算机专业。现在毕业2年,从销售岗位跨越式跳槽软件测试岗。当然我的薪资也已逆袭,从2k到17k。 踩过不少新手的坑…

[附源码]计算机毕业设计JAVA中小型艺术培训机构管理系统

[附源码]计算机毕业设计JAVA中小型艺术培训机构管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: S…

数据库设计(一)

目录 数据库设计的基本概念: 数据库设计包括以下几个部分: 需求设计: 1、数据: 2、处理: 概念结构设计: 实体: 例如: 联系类型: 1、一对一: 2、一对多&a…

Hbase和Mysql存储数据量对比

目录 前言 生成数据 转换成hbase能够识别的HFile文件 导入HFile到hbase中 导入数据到Mysql 总结 前言 由于想知道hbase和mysql存储同样的一份数据需要的存储是否一样,故做的一下实验。 生成数据 脚本如下: #!/bin/basharray_brand([1]huawei […

Java-MySQL

数据库基础知识 先谈发音 MySQL如何发音?在国内MySQL发音有很多种,Oracle官方文档说他们念作My sequal[si:kwəl]。 数据库基本概念 1 ● 数据 数据(Data)是指对客观事物进行描述并可以鉴别的符号,这些符号是可识别的、…

目标检测算法——人脸识别数据集汇总(附下载链接)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f384;&#x1f384;近期&#xff0c;小海带在空闲之余&#xff0c;收集整理了一批人脸识别数据集供大家参考。 整理不易&#xff0c;小伙伴们记得一键三连喔&#xff01;&#xff01;&#xff01;&am…

用python给女朋友写个圣诞树玩玩~

嗨害大家好鸭&#xff01;我是小熊猫~ 虽然我们不过洋节&#xff0c;但是女朋友要的话&#xff0c;那顺手写一个吧 代码&#x1f386; 模块 [源码、资料电子书点击此处] import turtle as t from turtle import * import random as r import time圣诞树细节以及画布大小 画布…

如何读取MySQL中的数据存放到HDFS_大数据培训

大数据培训读取MySQL中的数据存放到HDFS 1 查看官方模板 [atguiguhadoop102 ~]$ python /opt/module/datax/bin/datax.py -r mysqlreader -w hdfswriter { “job”: { “content”: [ { “reader”: { “name”: “mysqlreader”, “parameter”: { “column”: [], “conne…

ROS2初学者2022教程

ROS2初学者2022教程 掌握 ROS2 基础知识并成为机器人操作系统开发人员 – 一步一步 课程英文名&#xff1a;ROS2 For Beginners (ROS Foxy, Humble - 2022) 此视频教程共15.0小时&#xff0c;中英双语字幕&#xff0c;画质清晰无水印&#xff0c;源码附件全 下载地址 课程编…

手机视频如何修改封面?推荐这些修改方法

大家在社交平台上发布视频的时候会发现&#xff0c;一个好看的视频封面可以吸引很多的网友进行浏览和观赏。所以视频封面一直是视频创作者们不可忽略的一部分。那么你们知道手机视频怎么修改封面吗&#xff1f;如果你们想知道的话&#xff0c;那就接着往下看看吧&#xff0c;下…

Java_笔记_多态_包_final_权限修饰符_代码块

封装&#xff1a;对象代表什么&#xff0c;就得封装对应的数据&#xff0c;并提供数据对应的行为。 一、多态&#xff1a;对象的多种形态。同类型的对象&#xff0c;表现出的不同形态。 1.多态的表现形式&#xff1a;父类类型 对象名称 子类对象; 学生形态 对象 Student s …

Java异常(比较全)

前言&#xff1a;想要学好异常&#xff0c;需要了解JVM虚拟机知识&#xff0c;这里涉及面试常问的内存溢出错误解决办法 一、异常是什么&#xff1f; 定义 程序运行过程中&#xff0c;由于某些原因导致程序出错&#xff0c;从而结束程序运行&#xff0c;这就称为异常 java异常…

C++经典题目

目录 P62 3.6 求圆周长面积 P80 3 华氏转摄氏 P80 10 分段函数 P81 21 数列求和 P82 24 打印图形 P229 6 长方体体积 P384 4 printArea 题目来源于C程序设计&#xff08;第4版&#xff09; P62 3.6 求圆周长面积 设圆半径r1.5&#xff0c;圆柱高h3&#xff0c;求圆周长…

React生命周期中有哪些坑?如何避免?

在讨论React 的生命周期的时候&#xff0c;一定是在讨论类组件&#xff0c;因为函数组件并没有生命周期的概念&#xff0c;它本身就是一个函数&#xff0c;只会从头执行到尾巴 其实生命周期只是一个抽象的概念&#xff0c;大部分人看到生命周期想到的往往都componentDidMount&…

CMMI2.0配置管理工作及访谈学习笔记

1. 配置管理概述 1.1. 关于配置管理 配置管理是通过技术或其他手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施&#xff0c;通过配置标识、版本控制、版本管理、基线管理和配置审计来管理工作产品的完整性。 配置管理的主要目的是进行工作产品管理&#xf…

JavaScript -- 12. jQuery

文章目录jQuery1 jQuery简介2 使用jQuery2.1 下载jQuery2.2 引用jQuery3 jQuery的核心函数3.1 作为工具类使用3.2 作为函数使用3.2.1 将一个函数作为$的参数3.2.2 将选择器字符串作为参数3.2.3 将DOM对象作为参数3.2.4 将html代码作为参数4 jQuery对象4.1 获取DOM对象4.2 隐式迭…

Python——基础知识

前面主要讲解了javaEE的基础知识&#xff0c;基本上可以用servlet写一些简单的网页程序&#xff0c;后续的博客将围绕spring进行讲解&#xff0c;并且其中穿插一些python的知识 变量 命名 和其他的编程语言一样&#xff0c;java的变量命名需要遵循下面几个原则 由数字&…

世界杯竞猜项目Dapp-第二章(hardhat部署合约)

创建 hardhat 项目 # 创建 npm 空项目 npm init # 安装 npm install --save-dev hardhat2.11.1 # 创建工程 npx hardhat -> 选择高级ts项目运行测试 # 编译合约 npx hardhat compile # 单元测试 npx hardhat test添加合约 将 Worldcup.sol&#xff08;上节编写的合约&am…