目录

知识点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脚本来启动容器。

docker compose搭建lamp docker-compose编写_Docker

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

知识点2:compose的安装

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}

 mkdir -p $DOCKER_CONFIG/cli-plugins

 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上面,所以下载速度比较慢

授予可执行权限

docker compose搭建lamp docker-compose编写_运维_02

 测试compose是否安装成功

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

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

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

[root@docker1 /]# mkdir composetest
[root@docker1 /]# cd composetest/

2、在项目目录中创建一个名为的文件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)

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

flask
redis

4、创建一个Dockerfile

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

# 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"]
  • 从 Python 3.7 映像开始构建映像。
  • 将工作目录设置为/code.
  • 设置命令使用的环境变量flask。
  • 安装 gcc 和其他依赖项
  • 复制requirements.txt并安装 Python 依赖项。
  • 向镜像添加元数据以描述容器正在侦听端口 5000
  • 将项目中的当前目录复制.到镜像中的workdir .。
  • 将容器的默认命令设置为flask run.

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

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

6、使用compose构建程序

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

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

1、创建一个空目录

[root@docker1 /]# mkdir my_wordpress
[root@docker1 /]# cd my_wordpress/

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

services:
  db:
    # We use a mariadb image which supports both amd64 & arm64 architecture
    image: mariadb:10.6.4-focal
    # If you really want to use MySQL, uncomment the following line
    #image: mysql:8.0.27
    command: '--default-authentication-plugin=mysql_native_password'
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=somewordpress
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=wordpress
    expose:
      - 3306
      - 33060
  wordpress:
    image: wordpress:latest
    ports:
      - 80:80
    restart: always
    environment:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=wordpress
      - WORDPRESS_DB_NAME=wordpress
volumes:
  db_data:

3、构建项目

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

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

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

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

4、在浏览器中打开 WordPress

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

docker compose搭建lamp docker-compose编写_Docker_03

 

docker compose搭建lamp docker-compose编写_运维_04

 wordpress后台管理:

docker compose搭建lamp docker-compose编写_redis_05