Docker容器:docker-compose管理创建LNMP服务并运行Wordpress网站平台
文章目录
- 一.项目环境
- 1. 环境描述
- 2.项目需求
- 二.部署过程
- 1.安装Docker
- 2.安装Docker加速器
- 3.Docker-Compose安装部署
- 4.准备依赖文件、配置nginx
- 5.配置mysql
- 6.配置php
- 7.编写docker-compose.yml
- 8.验证
- 三.容器快照,然后将Docker镜像打包成tar包备份到本地
- 四.docker-compose.yml 下载到本地
一.项目环境
需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务使用docker-compose管理工作。
1. 环境描述
| 主机 | 操作系统 | ip地址 | 主要软件 |
|---|---|---|---|
| Docker | CentOS 7.6 x86_64 | 192.168.198.13 | Docker 20.08 |
2.项目需求
(1)使用Docker构建LNMP环境并运行Wordpress网站平台。
(2)为了方便运维和统一管理使用进行docker-compose编排
(3)将所有容器进行快照,然后将Docker镜像打包成tar包备份到本地。
(4)把docker-compose.yml 下载到本地
二.部署过程
1.安装Docker
#关闭防火墙
systemctl stop firewalld.service
setenforce 0
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker.service
systemctl enable docker.service
2.安装Docker加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://90b8orj3.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
3.Docker-Compose安装部署
#注意必须是在安装docker的基础上
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#下载安装包单独安装DockerCompose
chmod +x /usr/local/bin/docker-compose
#docker-compose添加执行权限
docker-compose --version
#查看docker-compose版本
4.准备依赖文件、配置nginx
#创建项目目录 compose_nginx;
mkdir /opt/compose_nginx/
cd /opt/compose_nginx
mkdir nginx mysql php wwwroot#上传wordpress软件包
cd /opt/compose_nginx/wwwroot/
ls wordpress-4.9.4-zh_CN.tar.gz
tar xf wordpress-4.9.4-zh_CN.tar.gz cd /opt/compose_nginx/nginx/
ls wordpress-4.9.4-zh_CN.tar.gz
tar xf wordpress-4.9.4-zh_CN.tar.gz #上传nginx软件包
cd /opt/compose_nginx/nginx/
ls nginx-1.12.0.tar.gz
nginx-1.12.0.tar.gz
如有nginx的各个文件可直接导入即可
cd /opt/compose_nginx/nginx/
vim Dockerfile
#编写nginx的Dockerfile文件
FROM centos:7
MAINTAINER this is nginx image <wl>
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make && useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make -j2 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
ADD nginx.conf /usr/local/nginx/conf/
#ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html/
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80
EXPOSE 443
ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]
vim nginx.confworker_processes 1;
events {worker_connections 1024;
}
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;charset utf-8;location / {root html;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}location ~ \.php$ {root html;#此地址是php端地址fastcgi_pass 172.18.0.30:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;include fastcgi_params;}}
}
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UHOXW3ht-1692769875072)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230823130735589.png)]](https://img-blog.csdnimg.cn/93d6fff143354aefb4448029855c4909.png)
5.配置mysql
#进入mysql子目录
cd /opt/compose_nginx/mysql/
#将mysql包上传到此目录
ls mysql-boost-5.7.20.tar.gz
如有mysql的各个文件可直接导入即可
#编写mysql的Dockerfile文件
cd /opt/compose_nginx/mysql/
vim DockerfileFROM centos:7
MAINTAINER this is mysql image <wl>
RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make
ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
WORKDIR /usr/local/src/mysql-5.7.20/
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 && make -j2 && make install
ADD my.cnf /etc/
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
RUN useradd -M -s /sbin/nologin mysql && chown mysql:mysql /etc/my.cnf && chown -R mysql:mysql /usr/local/mysql/ && /usr/local/mysql/bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data && cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
EXPOSE 3306
CMD ["/usr/local/mysql/bin/mysqld"]
vim my.cnf [client]
port = 3306
socket=/usr/local/mysql/mysql.sock[mysql]
port = 3306
socket = /usr/local/mysql/mysql.sock
auto-rehash[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i2cLQPsr-1692769875073)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230823131044053.png)]](https://img-blog.csdnimg.cn/e9c64b9ce6374b3fa27f0dd35f307811.png)
6.配置php
cd /opt/compose_nginx/php/
#将php包上传
ls php-7.1.10.tar.bz2
如有php的各个文件可直接导入即可
cd /opt/compose_nginx/php/vim Dockerfile FROM centos:7
MAINTAINER this is php image <wl>
RUN yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel \
gcc gcc-c++ make pcre-devel && useradd -M -s /sbin/nologin nginx
ADD php-7.1.10.tar.bz2 /usr/local/src/
WORKDIR /usr/local/src/php-7.1.10
RUN ./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip && make -j2 && make install
ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
ADD php.ini /usr/local/php/lib/
ADD php-fpm.conf /usr/local/php/etc/
ADD www.conf /usr/local/php/etc/php-fpm.d/
EXPOSE 9000
ENTRYPOINT [ "/usr/local/php/sbin/php-fpm", "-F" ]
#准备php-fpm.conf php.ini、www.conf 配置文件
vim php.ini
#该配置文件模板位于安装目录的 php-7.1.10/php.ini-development 位置
#939行,取消注释,修改
date.timezone = Asia/Shanghai
#1170行,修改
mysqli.default_socket = /usr/local/mysql/mysql.sockvim php-fpm.conf
#该配置文件位于 /usr/local/php/etc/php-fpm.conf.default
#17行,删除注释符号“;”
pid = run/php-fpm.pidvim www.conf
#该配置文件位于 cd /usr/local/php/etc/php-fpm.d/
user = nginx
group = nginx
#36行,修改监听IP和端口为容器IP:9000端口
listen = 172.18.0.30:9000
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tTk1npgc-1692769875073)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230823131817570.png)]](https://img-blog.csdnimg.cn/91bd176be85641b4b4c2c3e5b5fffad1.png)
7.编写docker-compose.yml
#拉取镜像centos:7
docker pull centos:7
vim docker-compose.yml version: '2'
services:nginx:hostname: nginxbuild:context: ./nginxdockerfile: Dockerfilecontainer_name: nginxports:- 80:80- 443:443networks:lnmp:ipv4_address: 172.18.0.10volumes:- ./wwwroot/:/usr/local/nginx/htmlmysql:hostname: mysqlbuild:context: ./mysqldockerfile: Dockerfilecontainer_name: mysqlports:- 3306:3306networks:lnmp:ipv4_address: 172.18.0.20volumes:- /usr/local/mysqlphp:hostname: phpbuild:context: ./phpdockerfile: Dockerfilecontainer_name: phpports:- 9000:9000networks:lnmp:ipv4_address: 172.18.0.30volumes_from:- nginx- mysqldepends_on:- nginx- mysqllinks:- nginx- mysql
networks:lnmp:driver: bridgeipam:config:- subnet: 172.18.0.0/16
docker-compose -f docker-compose.yml up -d
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gWpCSzrF-1692769875073)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230823132136807.png)]](https://img-blog.csdnimg.cn/0c9a3344260d48e68d39f1dc08d6b821.png)
8.验证
#在工作目录,使用docker-compose ps 可以看到启动的容器状态
docker-compose ps
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HlIKVFeI-1692769875074)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230823132224740.png)]](https://img-blog.csdnimg.cn/37e2d111de6c4320a4c219a11cde19ad.png)
#进入mysql容器,配置用户授权.
[root@test3 compose_nginx]# docker exec -it mysql /bin/bash
[root@mysql mysql-5.7.20]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 Source distributionCopyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)mysql> grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123';
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)mysql> exit
Bye
#访问网站
http://192.168.198.13/wordpress/wp-admin/setup-config.php
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6GLq3byx-1692769875074)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230823132450394.png)]](https://img-blog.csdnimg.cn/d41d362522b64fe1b6f1af35a2f0164d.png)
三.容器快照,然后将Docker镜像打包成tar包备份到本地
cd /op/
docker save -o 保存目录 导出的镜像
例如:
docker save -o compose_nginx_php.tar compose_nginx_php:latest


四.docker-compose.yml 下载到本地
#sz选择存储路径下载
sz docker-compose.yml
相关文章:
Docker容器:docker-compose管理创建LNMP服务并运行Wordpress网站平台
文章目录 一.项目环境1. 环境描述2.项目需求 二.部署过程1.安装Docker2.安装Docker加速器3.Docker-Compose安装部署4.准备依赖文件、配置nginx5.配置mysql6.配置php7.编写docker-compose.yml8.验证 三.容器快照,然后将Docker镜像打包成tar包备…...
实业兴国 守护种源 —— 白露木實®农业的活力之风
高科技领域,芯片是生命线;而在农业领域,种源与芯片在高科技领域的重要性是相同的。保护、发展、培育我国的种质资源,是中国农业发展至为关键的一环。但是,因为思想、观念、认识、技术等方面的原因,让我们错…...
Web3.0
一、Web3.0是什么 Web3.0(有时称为“分布式Web”或“去中心化Web”)是对互联网的下一代演进的概念。它代表了一种更加分散、去中心化和用户掌控的互联网模式,与传统的Web2.0模型有很大不同。 以下是Web3.0的一些关键特征和概念:…...
精密图纸被窃,知名手表品牌Seiko遭BlackCat勒索软件攻击
据BleepingComputer消息,日本著名手表制造商Seiko在7月末遭到了网络攻击,8月21日,BlackCat(又名ALPHV)勒索软件组织在其网站上宣布对这起攻击事件负责。 8 月 10 日,Seiko发布了一份数据泄露通知࿰…...
K8S如何部署Redis(单机、集群)
在今天的讨论中,我们将深入研究如何将Redis数据库迁移到云端,以便更好地利用云计算的优势提高数据管理的灵活性。 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis支持多…...
Flask狼书笔记 | 03_模板
文章目录 3 模板3.1 模板基本使用3.2 模板结构组织3.3 模板进阶 3 模板 模板(template):包含固定内容和动态部分的可重用文件。Jinja2模板引擎可用于任何纯文本文件。 3.1 模板基本使用 HTML实体:https://dev.w3.org/html5/htm…...
MySQL 数据备份和数据恢复
目录 一、数据备份 1、概述 2、MySQLdump命令备份 1)备份单个数据库中的所有表 2) 备份数据中某个或多个表 3) 备份所有数据库 4)备份多个库 5) 只备份一个表或多个表结构 二、数据恢复 三、数据备份与恢复应用 一、数据备份 1、概述 数据备…...
软考高级系统架构设计师系列论文八十二:论软件的可维护性设计
软考高级系统架构设计师系列论文八十二:论软件的可维护性设计 一、摘要二、正文三、总结一、摘要 随着软件大型化,复杂化的发展,软件维护所耗费的资源越来越多,软件可维护性设计日益得到重视。我单位近几年开发综合业务 ATM交换机,用户对交换机的可维护性要求很高。我参加…...
Ompl初探
在/ompl-1.x.0/build/Release/bin下有很多生成的demo可执行文件 在终端执行 ./demo_Point2DPlanning 测试程序 #include <ompl/base/SpaceInformation.h> #include <ompl/base/spaces/SE3StateSpace.h> #include <ompl/base/StateSpace.h> #include <o…...
android sdk打包aar方案步骤
1.使用fat-aar库https://github.com/kezong/fat-aar-android/blob/master/README_CN.md 第一步:添加以下代码到你工程根目录下的build.gradle文件中: For Maven Central (The lastest release is available on Maven Central): buildscript {repositories {maven…...
Redis之bitmap类型解读
目录 基本介绍 基本命令 Setbit Getbit BITCOUNT 应用场景 统计当日活跃用户 用户签到 bitmap - Redis布隆过滤器 (应对缓存穿透问题) 基本介绍 Redis 的位图(bitmap)是由多个二进制位组成的数组,只有两…...
stm32之10.系统定时器
delay_s()延时秒 delay_ms()毫秒*1000 delay_us()微秒*1000000 微秒定时器代码 void delay_us(uint32_t n) { SysTick->CTRL 0; // Disable SysTick,关闭系统定时器 SysTick->LOAD SystemCoreClock/1000000*n-1; // 就是nus SysTick->LOAD Sys…...
PyTorch安装教程:从头开始配置PyTorch环境
PyTorch是一个开源的机器学习框架,广泛用于深度学习任务。要开始使用PyTorch,您需要在计算机上正确配置PyTorch环境。本文将为您提供一步步的指南,帮助您成功安装和配置PyTorch。 第一部分:安装Python和相关工具 第一步…...
Docker拉取并配置Grafana
Linux下安装Docker请参考:Linux安装Docker 安装准备 新建挂载目录 /opt/grafana/data目录,准备用来挂载放置grafana的数据 /opt/grafana/plugins目录,准备用来放置grafana的插件 /opt/grafana/config目录,准备用来挂载放置graf…...
Vue+Axios搭建二次元动态登录页面(mp4视频格式)
最近想做一个前端登录页面,背景好看的,格式中规中矩的,这么难?我自己创一个吧! 效果图如下: 源码可以参考我的github,复制源码即可用:gym02/loginPage_Vue: 使用VueAxios搭建的动态…...
【Kubernetes】K8S到底是什么,最近怎么这么火
前言 kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kub…...
Java爬虫下载网页图片
在Java中,可以使用HttpURLConnection,Jsoup等库来实现网页爬取和图片下载。下面是一个基本的例子: 首先,需要添加Jsoup库到你的项目中。如果你使用Maven,可以在你的pom.xml文件中添加以下依赖: xml <…...
C语言之扫雷游戏实现篇
目录 主函数test.c 菜单函数 选择循环 扫雷游戏实现分析 整体思路 问题1 问题2 问题3 问题4 游戏函数(函数调用) 创建游戏盘数组mine 创建游戏盘数组show 初始化游戏盘数组InitBoard 展示游戏盘DisplayBoard 游戏盘置雷SetMine 游戏…...
Python面向对象中super用法与MRO机制
Python面向对象中super用法与MRO机制 最近再看trackformer,里面用到了super的用法,记录一下super的用法 class A(object):def __init__(self):print(init A)def fun(self):print(A.fun)print(self)super(A, self).fun()class B(object):def __init__(s…...
高性能网络模式-Reactor
事实上,Reactor 模式也叫Dispatcher模式,即I/O 多路复⽤监听事件,收到事件后,根据事件类型分配(Dispatch)给某个进程/线程。Reactor 模式也是一种非阻塞同步网络模式。 Reactor 模式主要由 Reactor部分和处…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
