码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Docker安装部署DockerCompose&案例演示&配置文件&命令实操学习】


    一.知识回顾

    之前的内容都帮你整理好了,在这里哟!

    【0.Docker相关目录文章整理,可自行查看,包含多节内容】
    【1.Docker详细安装部署&阿里镜像地址配置】
    【2.Docker架构&&架构角色概念&&角色作用】
    【3.Docker命令详细讲解&实操演示】
    【4.Docker镜像文件&加载原理&生产中重新制作并提交镜像文件&案例演示】
    【5.Docker数据卷&数据卷容器&DockerFile执行流程】
    【6.DockerFile构建自定义镜像实操&出现问题解决方案Failed to download metadata for repo ‘appstream‘: IPv4 forwarding disabled…】
    【7.详细学习Docker部署搭建高可用的MySQL集群环境】
    【8.基于haproxy实现负载均衡之~~~应用Docker部署搭建高可用的MySQL集群环境】

    二.Docker安装部署DockerCompose

    2.1 DockerCompose相关概念学习

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

    DockerCompose的使用步骤:

    • 创建容器对应的DockerFile文件
    • 创建yml文件,在yml文件中编排我们的服务
    • 通过docker-compose up命令 一键运行我们的容器

    2.2 DockerCompose安装

    2.2.1 使用命令下载docker-compose
    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
    
    • 1

    在这里插入图片描述

    如果下载速度过慢使用下面的地址:

    curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    
    
    • 1
    • 2
    2.2.2 修改文件夹权限
    chmod +x /usr/local/bin/docker-compose
    
    • 1

    在这里插入图片描述

    2.2.3 建立软连接
    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    
    • 1

    在这里插入图片描述

    2.2.4 校验是否安装成功
    docker-compose --version
    
    • 1

    在这里插入图片描述

    三、DockerCompose体验~官网部署案例

    官方Python案例

    3. 1创建对应的目录

     mkdir composetest
     cd composetest
    
    • 1
    • 2

    3.2 创建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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

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

    flask
    redis
    
    • 1
    • 2

    3.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"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

    version: "3.9"
    services:
      web:
        build: .
        ports:
          - "5000:5000"
      redis:
        image: "redis:alpine"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

    docker-compose up
    
    • 1

    3.7 启动时间比较久,耐心等待即可,启动成功后测试访问:宿主机ip+端口进行访问

    3.8 如果要退出服务

    Ctrl+c 或者 docker-compose down

    四、DockerCompose配置文件

    4.1 docker-compse.yml核心配置官网查看手册

    version: '' # 版本
    servers:  # 服务
      服务1: web
         # 服务的配置
         build    # 构建我们的dockerfile文件
         network  # 服务网络地址
         images   # 服务镜像
      服务2: redis
      ...
    # 其他配置 网络,全局的规则 数据卷
    volumes:
    configs:
    networks:
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4.2 常见的dockercompose命令

    4.2.1 查看版本
    docker-compose version
    
    • 1
    4.2.2 根据yml创建service
    # 一键启动命令
    docker-compose up
    ​#指定yaml:
    docker-compose  up -f xxx.yaml
    #后台运行:
    docker-compose up -d
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    4.2.3 查看启动成功的service
    # 和docker ps同理
    docker-compose ps
    
    • 1
    • 2

    ​

    4.2.4 查看images
    docker-compose images
    
    • 1
    4.2.5 停止/启动service
    docker-compose stop/start 
    
    • 1
    4.2.6 删除service[同时会删除掉network和volume]
    docker-compose down
    
    • 1
    4.2.7 进入到某个service
    docker-compose exec redis sh
    
    • 1

    五、DockerCompose部署实战

    5.1 DockerCompose部署实战官方案例

    5.2 一键部署WP博客

    5.2.1 创建my_wordpress目录
    mkdir my_wordpress
    
    • 1
    5.2.2 创建docker-compose.yml
    version: "3.1"
        
    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: {}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    5.2.3 通过up命令启动
    docker-compose up -d
    
    • 1

    注意:如果启动过程中出现如下的错误,需要去docker的官方网站上查看docker-compose.yml文件版本信息

    docker-compose.yml文件版本信息

    在这里插入图片描述

    解决:这个地方我从3.9改为了3.1版本,重新启动,成功部署。

    在这里插入图片描述

    5.2.4 浏览器访问部署的项目宿主机ip地址+端口

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    好了,到这里【Docker安装部署DockerCompose&案例演示&配置文件&命令实操学习】就结束了,持续更新中,持续学习中,持续创作中!加油。

  • 相关阅读:
    阿里双十一交易核心链路产品--RocketMQ 底层原理及性能调优实战
    van-list 遇到的问题
    uni-app详解
    Qt(C++) | QPropertyAnimation动画(移动、缩放、透明)篇
    PEG功能化/修饰/偶联中空二氧化硅纳米球 PEG-Hollow SiO2 nanosphere
    机器学习,深度学习
    `英语` 2022/8/8
    解决LiveData数据倒灌的新思路
    C 语言与 C++ 面试知识总结
    jvm oom内存溢出,导出dump,使用mat进行问题分析
  • 原文地址:https://blog.csdn.net/Coder_ljw/article/details/127544829
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号