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

news2024/11/28 6:31:17

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

  • 1.Docker-Compose概述
  • 2.YAML文件格式及编写注意事项
  • 3.Docker-Compose配置常用字段
  • 4.Docker Compose常用命令
  • 5.使用Docker-compose创建LNMP环境,并运行Wordpress网站平台
    • 1. Docker Compose 环境安装
      • 下载
      • 安装
      • 查看版本
    • 2.使用Docker-compose创建LNMP环境
      • 创建compose的工作目录,并删除目前系统中多余的镜像和容器
      • 创建lnmp相关的配置
      • 在compose目录下创建docker-compose.yml文件

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 时需要注意下面事项

●大小写敏感
●通过缩进表示层级关系
●不支持制表符 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标签用于解决容器的依赖、启动先后的问题。

例如:

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

下载

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

安装

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

查看版本

docker-compose --version

在这里插入图片描述

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

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

在这里插入图片描述

创建lnmp相关的配置

相关参考博客

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

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:

在这里插入图片描述

docker-compose -f docker-compose.yml up -d
docker-compose ps

在这里插入图片描述

docker-compose 总结

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

服务

容器

项目/工程  ——>> 包含一个或多个 服务 ——>> 一个服务中会包括一个或多个  容器

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

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

相关文章

Spring 的元注解

一、元注解介绍 1.1.源码引入 1.2.元注解介绍 从上面的图片可知,Spring 有四个【负责注解其他注解】的元注解,分别是: Target:标识该注解可以用于标注哪些程序元素,比如类、方法、字段等。 Retention:标…

【PS教程-环境搭建】

下载地址 安装教程 软件安装包下载解压打开。找到Set-up应用程序双击运行安装。点击继续,或者你需要更改安装位置。软件正在安装中。软件安装成功。安装完成,打开软件使用。 通道抠图(主体颜色不能和背景相近) 抠图攻略 首先…

重学C++系列之const与static关键字分析

前言 本篇幅讲解关键字const与static,主要围绕在类的范围内叙述,包括作用和使用场景等。 一、const与static的作用 1、const修饰的成员变量,成员变量初始化后不能再修改。 2、const修饰的成员函数,成员函数不可以修改成员变量&am…

063、故障处理之快速恢复数据

数据丢失快速恢复的重要性 目的:尽快修复数据,恢复业务 快速恢复相关技术对比 常用备份恢复技术 数据快速恢复原理 MVCC 是TiDB数据库原生的一项功能,默认使用无需配置,它使用多个历史快照的方式来维护数据在某个时间点对并…

五步快速搭建个性化外卖小程序商城

随着人们生活节奏的加快,外卖行业蓬勃发展。为了满足用户的需求,许多企业开始使用小程序商城来提供外卖服务。那么,如何制作一个功能完善、用户友好的外卖小程序商城呢?下面就来为大家详细介绍一下制作的步骤。 首先,我…

【深度学习】以图搜索- facebook的faiss 从环境搭建到运行案例从0到1

文章目录 前言安装小试牛刀项目延伸总结 前言 Faiss的全称是Facebook AI Similarity Search。 这是一个开源库,针对高维空间中的海量数据,提供了高效且可靠的检索方法。 暴力检索耗时巨大,对于一个要求实时人脸识别的应用来说是不可取的。 …

当深度强化学习(DRL)遇见图神经网络(GNN)

本篇文章是博主在人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在学习摘录和笔记专…

day02.数组

一,数组 数组:一组有序的相同类型数据的集合 1.1声明数组: 数组元素类型 数组名【】;数组元素类型【】 数组名; 🎃more : 数组元素类型【】【】数组名;注:Java的数组是先声明对象再分配空间(而C语言是声明数组的同时指明了数组的长度,给数组分配了…

fastadmin采坑之接口分页处理

其实不算fastadmin的代码而是thinkphp自带的分页代码 paginate函数就是自带的分页函数,开始我以为这个只能用于渲染模板不能用于接口,后面看到源代码发现请求参数带page就可以 /*** ApiTitle (获取协会会员)* ApiSummary (获取协会会员)* ApiMethod …

买卖股票的最佳时机系列

//方法一 class Solution { public:int dp[100005];int maxProfit(vector<int>& prices) {//dp[i]表示前i天买入卖出的获取的最大利润//min_val表示前i-1天买入的最小值&#xff1b;dp[0]0;int min_valprices[0];for(int i1;i<prices.size();i){dp[i]max(dp[i-1],…

7.26 作业

1. 完善登录界面 main.c #include "widget.h" #include "second.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();Second s;QObject::connect(&w,&Widget::to_second,&s,…

利用mysqldump实现分库分表备份的shell脚本

一、信息摘要 linux版本&#xff1a;CentOS 7.9 mysql版本&#xff1a;MySQL 5.7.36 脚本实现功能&#xff1a;利用mysqldump工具实现对mysql中的数据库分库备份&#xff0c;和对所备份数据库中的表分表备份 二、shell脚本 #!/bin/bash ######################### #File n…

ROS1ROS2之CmakeList.txt和package.xml用法详解

前言&#xff1a;目前还在学习ROS无人机框架中&#xff0c;&#xff0c;&#xff0c; 更多更新文章详见我的个人博客主页【前往】 文章目录 1. CMakeLists.txt与package.xml的作用2. 生成CMakeLists.txt2.1 ROS12.2 ROS2 3. CMakeLists.txt编写3.1 ROS13.2 ROS2 4. package.xml…

【Linux指令集】---tar指令(超详细)

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【Linux专栏】&#x1f388; 本专栏旨在分享学习Linux的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 演示环境&#xff1…

常见面试题之设计模式--策略模式

1. 概述 先看下面的图片&#xff0c;我们去旅游选择出行模式有很多种&#xff0c;可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿&#xff0c;开发需要选择一款开发工具&#xff0c;当然可以进行代码开发的工具有很多&#xff0c;可以选择Idea进行开发&a…

(学习日记)2023.04.30

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

JS基础算法03--俩数之和

最简单 &#xff0c; 最基础的。 如果不会 &#xff0c; 请写会 &#xff0c;请掌握&#xff0c;请让心安定 给定一个数组 nums 和一个目标值 target&#xff0c;在该数组中找出和为目标值的两个数 const nums [1, 2, 3, 4, 5, 6, 7, 8]const target 5function find(nums, t…

Vue.js入门指南:从基础到进阶,掌握现代JavaScript框架的核心概念与高级特性(2W字小白教程)

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

基于 Python 的性能测试工具 locust (与 LR 的简单对比)

目录 前言&#xff1a; 背景 基础 测试需求 服务器端 LR 中的测试脚本 locust 中的测试脚本 LR 中的测试过程和结果 Locust 中的测试过程和结果 结果比较 总结 前言&#xff1a; Locust 是一种开源的性能测试工具&#xff0c;可以帮助我们快速地进行网站、应用程序…

Linux:入门学习知识及常见指令

文章目录 入门介绍操作系统的概念Linux机器的使用Linux上的指令 对文件知识的补充文件的定义和一些含义文件和目录的存储绝对路径和相对路径 ls指令pwd指令cd指令touch指令mkdir指令rmdir指令rm指令man指令cp指令mv指令cat指令more指令echo指令输出重定向 less指令find指令grep…