码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Docker - compose容器编排工具 - 搭建一个自己的博客


     

    目录

    知识点1:什么是 compose?

    知识点2:compose的安装

    其实在家目录创建了一个目录:/root/.docker/cli-plugins

    授予可执行权限

     测试compose是否安装成功

    知识点3:构建一个在 Docker Compose 上运行的简单 Python Web 应用程序

    1、为项目创建一个目录:

    2、在项目目录中创建一个名为的文件app.py

    3、在您的项目目录中创建另一个名为的文件requirements.txt

    4、创建一个Dockerfile

    5、 创建一个docker-compose.yml文件定义服务

    6、使用compose构建程序

    知识点4:使用compose 搭建个人博客网站

    1、创建一个空目录

    2、创建一个docker-compose.yml用于启动您的 WordPress博客的文件和一个带有卷挂载的单独MySQL实例以实现数据持久性

    3、构建项目

    4、在浏览器中打开 WordPress

    场景:

    例如:我们现在需要启动10个容器,其中3个nginx,2个redis,3个mysql,1个zabbix,1个ansible
          有些容器需求先启动,有容器需要后启动,在启动的时候是有先后顺序的。

    批量启动容器,而且启动的时候容器之间是有依赖关系,需要考虑启动顺序的

    编排的内容全部写到一个yaml文件里,docker 的compose根据这个yaml文件里的安排去启动容器。

    知识点1:什么是 compose?

    compose 是一个容器编排工具:

            启动一个容器,进行哪些配置,例如端口,进程,卷,是否链接其他容器等

            compose 是Docker容器进行编排的工具,

    Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器。

    ###############################################################################################

    知识点2:compose的安装

    1. DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
    2. mkdir -p $DOCKER_CONFIG/cli-plugins
    3. curl -SL https://github.com/docker/compose/releases/download/v2.7.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

    其实在家目录创建了一个目录:/root/.docker/cli-plugins

     因为compose源码在github上面,所以下载速度比较慢

    授予可执行权限

     测试compose是否安装成功

    1. [root@docker cli-plugins]# docker compose version
    2. Docker Compose version v2.7.0
    3. [root@docker cli-plugins]# pwd
    4. /root/.docker/cli-plugins

    知识点3:构建一个在 Docker Compose 上运行的简单 Python Web 应用程序

    1、为项目创建一个目录:

    1. [root@docker1 /]# mkdir composetest
    2. [root@docker1 /]# cd composetest/

    2、在项目目录中创建一个名为的文件app.py

    1. import time
    2. import redis
    3. from flask import Flask
    4. app = Flask(__name__)
    5. cache = redis.Redis(host='redis', port=6379)
    6. def get_hit_count():
    7. retries = 5
    8. while True:
    9. try:
    10. return cache.incr('hits')
    11. except redis.exceptions.ConnectionError as exc:
    12. if retries == 0:
    13. raise exc
    14. retries -= 1
    15. time.sleep(0.5)
    16. @app.route('/')
    17. def hello():
    18. count = get_hit_count()
    19. return 'Hello World! I have been seen {} times.\n'.format(count)

    3、在您的项目目录中创建另一个名为的文件requirements.txt

    1. flask
    2. redis

    4、创建一个Dockerfile

    编写一个构建 Docker 映像的 Dockerfile。该映像包含 Python 应用程序所需的所有依赖项,包括 Python 本身。

    1. # syntax=docker/dockerfile:1
    2. FROM python:3.7-alpine
    3. WORKDIR /code
    4. ENV FLASK_APP=app.py
    5. ENV FLASK_RUN_HOST=0.0.0.0
    6. RUN apk add --no-cache gcc musl-dev linux-headers
    7. COPY requirements.txt requirements.txt
    8. RUN pip install -r requirements.txt
    9. EXPOSE 5000
    10. COPY . .
    11. CMD ["flask", "run"]
    • 从 Python 3.7 映像开始构建映像。
    • 将工作目录设置为/code.
    • 设置命令使用的环境变量flask。
    • 安装 gcc 和其他依赖项
    • 复制requirements.txt并安装 Python 依赖项。
    • 向镜像添加元数据以描述容器正在侦听端口 5000
    • 将项目中的当前目录复制.到镜像中的workdir .。
    • 将容器的默认命令设置为flask run.

    5、 创建一个docker-compose.yml文件定义服务

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

    6、使用compose构建程序

    1. [root@docker1 composetest]# ls
    2. app.py docker-compose.yml Dockerfile requirements.txt
    3. [root@docker1 composetest]# docker compose up

    知识点4:使用compose 搭建个人博客网站

    1、创建一个空目录

    1. [root@docker1 /]# mkdir my_wordpress
    2. [root@docker1 /]# cd my_wordpress/

    2、创建一个docker-compose.yml用于启动您的 WordPress博客的文件和一个带有卷挂载的单独MySQL实例以实现数据持久性

    1. services:
    2. db:
    3. # We use a mariadb image which supports both amd64 & arm64 architecture
    4. image: mariadb:10.6.4-focal
    5. # If you really want to use MySQL, uncomment the following line
    6. #image: mysql:8.0.27
    7. command: '--default-authentication-plugin=mysql_native_password'
    8. volumes:
    9. - db_data:/var/lib/mysql
    10. restart: always
    11. environment:
    12. - MYSQL_ROOT_PASSWORD=somewordpress
    13. - MYSQL_DATABASE=wordpress
    14. - MYSQL_USER=wordpress
    15. - MYSQL_PASSWORD=wordpress
    16. expose:
    17. - 3306
    18. - 33060
    19. wordpress:
    20. image: wordpress:latest
    21. ports:
    22. - 80:80
    23. restart: always
    24. environment:
    25. - WORDPRESS_DB_HOST=db
    26. - WORDPRESS_DB_USER=wordpress
    27. - WORDPRESS_DB_PASSWORD=wordpress
    28. - WORDPRESS_DB_NAME=wordpress
    29. volumes:
    30. db_data:

    3、构建项目

    1. [root@docker1 my_wordpress]# docker compose up -d
    2. [+] Running 2/2
    3. ⠿ Container my_wordpress-wordpress-1 Started 2.6s
    4. ⠿ Container my_wordpress-db-1 Started

    - d 表示在后台运行容器服务

    docker compose ps 表示列出目前项目中的所有容器

    1. [root@docker1 my_wordpress]# docker compose ps
    2. NAME COMMAND SERVICE STATUS PORTS
    3. my_wordpress-db-1 "docker-entrypoint.s…" db running 3306/tcp, 33060/tcp
    4. my_wordpress-wordpress-1 "docker-entrypoint.s…" wordpress running 0.0.0.0:80->80/tcp, :::80->80/tcp

    4、在浏览器中打开 WordPress

    完成所需资料,然后点击安装wordpress 

     

     wordpress后台管理:

     

     

  • 相关阅读:
    无限猴子 歌唱王国 题解
    Evaluation Metrics in the Era of GPT-4
    Word控件Spire.Doc 【文本】教程(10) ;在 word 文档中的字符或句子周围应用边框
    R语言ggplot2可视化相关系数图(correlation analysis):通过数据点的大小以及颜色(双色渐变填充)表征相关性的强度
    密码学与信息安全面试题及参考答案(2万字长文)
    如何搬运视频赚钱?
    Rustdesk安装教程
    Redis高可用之持久化
    SpringBoot 还在用 if 校验参数?那你真的太low了,老司机都是这么玩的
    前后端分离项目,vue+uni-app+php+mysql在线教育视频点播系统(H5移动项目) 开题报告
  • 原文地址:https://blog.csdn.net/qq_48391148/article/details/126690241
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号