基于Docker-compose创建LNMP环境并运行Wordpress网站平台

基于Docker-compose创建LNMP环境并运行Wordpress网站平台

1.Docker-Compose概述

Docker-Compose将所管理的容器分为三层,分别是项目(project)、服务(service)以及容器(container) 。

Docker-Compose运行目录下的所有文件组成一个项目,若无特殊指定项目名即为当前目录名。

一个工程当中可包含多个服务,每个服务都包含一个名称、镜像、端口映射、环境变量、挂载点等信息。

Docker-Compose的项目配置文件默认为docker-compose.yml,可通过环境变量 COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

Compose允许用户通过一个单独的docker-compose.yml模板文件(AM格式),来定义一组相关联的应用容器为一个项目(project)。

2.YAML文件格式及编写注意事项

YAML是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于json数据描述语言,语法比json简单的很多。YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号[]括起来, hash用花括号{}括起来。
使用 YAML 时需要注意下面事项

c 复制代码
●大小写敏感
●通过缩进表示层级关系
●不支持制表符 tab 键缩进,只能使用空格缩进
●缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
●用 # 号注释
●符号字符后缩进1个空格,如冒号 :  、逗号 ,  、横杠 - 
●如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思

3.Docker-Compose配置常用字段

字段 描述
build 指定 Dockerfile 文件名,要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定
dockerfile 构建镜像上下文路径
context 可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址
image 指定镜像
command 执行命令,覆盖容器启动后默认执行的命令
container_name 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量
deploy 指定部署和运行服务相关配置,只能在 Swarm 模式使用
environment 添加环境变量
networks 加入网络,引用顶级networks下条目
network_mode 设置容器的网络模式,如 host,bridge,...
ports 暴露容器端口,与 -p 相同,但端口不能低于 60
volumes 挂载一个宿主机目录或命令卷到容器,命名卷要在顶级 volumes 定义卷名称
volumes_from 从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本 '2' 支持
hostname 容器主机名
sysctls 在容器内设置内核参数
links 连接到另外一个容器,- 服务名称[:服务别名]
privileged 用来给容器root权限,注意是不安全的,true
restart 设置重启策略,no,always,no-failure,unless-stopped no,默认策略,在容器退出时不重启容器。on-failure,在容器非正常退出时(退出状态非0),才会重启容器。on-failure:3,在容器非正常退出时重启容器,最多重启3次。always,在容器退出时总是重启容器。unless-stopped,在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。
depends_on 在使用Compose时,最大的好处就是少打启动命令,但一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,可能会因为容器依赖问题而启动失败。例如在没启动数据库容器的时候启动应用容器,应用容器会因为找不到数据库而退出。depends_on标签用于解决容器的依赖、启动先后的问题。

例如:

bash 复制代码
php:
depends_on  
-  apach 
-  mysql

4.Docker Compose常用命令

字段 描述
build 重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定一个服务容器启动数量
top 显示容器进程
logs 查看容器输出
down 删除容器、网络、数据卷和镜像
stop/start/restart 停止/启动/重启服务

5.使用Docker-compose创建LNMP环境,并运行Wordpress网站平台

1. Docker Compose 环境安装

Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose

下载

bash 复制代码
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 

安装

bash 复制代码
chmod +x /usr/local/bin/docker-compose

查看版本

bash 复制代码
docker-compose --version

2.使用Docker-compose创建LNMP环境

创建compose的工作目录,并删除目前系统中多余的镜像和容器

创建lnmp相关的配置

相关参考博客

在compose目录下创建docker-compose.yml文件

bash 复制代码
vim /opt/compose/docker-compose.yml
version: '3'

services:
  nginx:
    build:
      contest: ./lnmp/nginx
      dockerfile: Dockerfile
    container_name: nginx
    ports:
    - 80:80
    volumes:
    - ./lnmp/nginx/html:/usr/local/nginx/html
    networks:
      lnmp:
        ipv4_address:172.18.0.10



  mysql:
#    build:
#      contest: ./lnmp/mysql
#      dockerfile: Dockerfile
     image: mysql:jiang    # 这里mysql构建时间太长,所以就采用之前实验留下的镜像直接构建
     container_name: mysql
     ports:
     - 3306:3306
     volumes:
     - db-data:/usr/local/mysql
     networks:
       lnmp:
         ipv4_address:172.18.0.20
     privileged: true    #使用root权限创建容器


  php:
#     build:
#       contest: ./lnmp/php
#       dockerfile: Dockerfile
     image: php:jiang
     container_name: php
     ports:
     - 9000:9000
     volumes:
     - db-data:/usr/local/mysql   #挂载目录到db_data顶级目录中
     - ./lnmp/nginx/html:/usr/local/nginx/html  
     networks:
       lnmp:
         ipv4_address:172.18.0.30
     depends_on:
     - nginx
     - mysql

networks:   #使用自定义网络模式
  lnmp:
    driver: bridge
    ipam:
      config:
      - subnet: 172.18.0.0/16

volumes:  定义顶级目录(虚拟目录不需要创建)
  db-data:
bash 复制代码
docker-compose -f docker-compose.yml up -d
docker-compose ps

docker-compose 总结

bash 复制代码
docker-compose------------实现单机容器集群编排管理
	使用一个模板文件定义多个应用容器的启动参数和依赖关系,并使用docker compose来根据这个模板文件的配置来启动容器	
bash 复制代码
项目/工程
    默认使用项目的目录名做项目名,支持使用 -p  或 --project-name  来指定项目名,在项目的目录中通常会包含一个docker-compose.yml配置模板文件。此文件为项目的默认配置文件(支持使用 -f 或 COMPOSE_FILE来指定项目的配置模板文件)
   在里面可以定义项目的一个或多个服务,每个服务包含容器的名称、镜像、端口映射、环境变量、挂载点、依赖关系等配置参数

服务

容器

项目/工程  ------>> 包含一个或多个 服务 ------>> 一个服务中会包括一个或多个  容器
相关推荐
程序员老赵1 小时前
ComfyUI Docker 镜像部署指南
人工智能·docker·aigc
会飞的土拨鼠呀2 小时前
Docker 部署开源蜜罐Cowrie
docker·容器·开源
我是谁??2 小时前
Rocky9.2离线安装docker和NVIDIA Container Toolkit训练环境搭建
运维·docker·容器
oMcLin2 小时前
如何在 Linux 上的 aaPanel 中使用 Docker 部署 WordPress 博客:从配置到上线一站式教程
linux·运维·docker
无心水3 小时前
【神经风格迁移:工程化】27、神经风格迁移全栈进阶实战:Docker容器化与K8s部署,从单机到云原生
docker·云原生·架构·神经风格迁移·docker容器化·ai部署·vgg算法
victory04313 小时前
K8S 从Harbor当中拉取镜像 连接方法
云原生·容器·kubernetes
陈陈CHENCHEN3 小时前
【Kubernetes】K8s 1.35 配置 Docker 作为容器运行时
docker·kubernetes
梁萌4 小时前
Jenkins自动化部署(docker)
docker·自动化·jenkins·流水线·cicd·smartadmin
勇气要爆发4 小时前
Kubernetes (K8S):云时代的“超级舵手”
云原生·容器·kubernetes
java_logo4 小时前
MinerU Docker 部署指南:PDF 结构化解析服务实践
docker·容器·pdf·mineru·mineru部署·mineru部署文档·mineru部署教程