使用docker-compose编排Lnmp(dockerfile) 完成Wordpress

目录

一、 Docker-Compose

1.1Docker-Compose介绍

1.2环境准备

1.2.1准备容器目录及相关文件

1.2.2关闭防火墙关闭防护

1.2.3下载centos:7镜像

1.3Docker-Compose 编排nginx

1.3.1切换工作目录

1.3.2编写 Dockerfile 文件

1.3.3修改nginx.conf配置文件

1.4Docker-Compose 编排mysql

1.4.1切换工作目录

1.4.2编写 Dockerfile 文件

1.4.3准备my.cnf文件

1.5Docker-Compose 编排php

1.5.1切换工作目录

1.5.2编写 Dockerfile 文件

1.5.3准备 php.ini、php-fpm.conf、www.conf 配置文件

1.5.3.1修改php.ini

1.5.3.2修改php-fmp.conf

1.5.3.3修改www.conf

1.6下载 Docker Compose 并安装

1.7编写docker-compose.yml文件

1.7.1启动服务

1.7.2查看镜像和容器

1.8进入容器登录 mysql 授权

1.9创建一个新的配置文件 wp-config.php

1.10浏览器访问 wordpress


一、 Docker-Compose

1.1Docker-Compose介绍

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排

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

Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如 Consul。

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

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

Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API, 就可以在其上利用Compose来进行编排管理。

1.2环境准备

1.2.1准备容器目录及相关文件

1.2.2关闭防火墙关闭防护

systemctl stop firewalld
setenforce 0

1.2.3下载centos:7镜像

docker pull centos:7 

1.3Docker-Compose 编排nginx

1.3.1切换工作目录

1.3.2编写 Dockerfile 文件

FROM centos:7
MAINTAINER this is nginx image <zzz1>
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;" ]

1.3.3修改nginx.conf配置文件

1.3.4创建html文件夹,并解压wordpress

1.4Docker-Compose 编排mysql

1.4.1切换工作目录

1.4.2编写 Dockerfile 文件

FROM centos:7
MAINTAINER this is mysql image <zzz2>
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 -j 4 && 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/l
ocal/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"]

1.4.3准备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

1.5Docker-Compose 编排php

1.5.1切换工作目录

1.5.2编写 Dockerfile 文件

FROM centos:7
MAINTAINER this is php image <zzz3>
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" ]

1.5.3准备 php.ini、php-fpm.conf、www.conf 配置文件

1.5.3.1修改php.ini
[root@localhost php]# vim php.ini939 date.timezone = Asia/Shanghai  # 取消注释,修改
1170 mysqli.default_socket = /usr/local/mysql/mysql.sock
# MySQL数据库的默认socket文件路径,用于PHP连接MySQL数据库时寻找MySQL服务器的通信端口
[root@localhost php]# egrep -v "^;" php.ini | egrep -v "^$"
# 显示php.ini文件中的非注释和非空行内容,即显示出配置文件中的有效配置项

1.5.3.2修改php-fmp.conf

1.5.3.3修改www.conf

1.6下载 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# `uname -s`-`uname -m`也可以写成$(uname -s) 和 $(uname -m):分别会自动替换为你的系统类型(如:Linux)和机器架构(如:x86_64),确保你下载的是适合你系统的版本。
# curl -L:这部分表示使用curl命令进行下载,并且使用-L参数来跟随重定向
# -o /usr/local/bin/docker-compose: 表示将下载的文件保存为/usr/local/bin目录下的docker-compose文件#安装
chmod +x /usr/local/bin/docker-compose#查看版本
docker-compose --version

1.7编写docker-compose.yml文件

#定义docker-compose版本,可以是2 或 3
version: '3'
services:nginx:container_name: nginxhostname: nginxbuild:context: /opt/compose_lnmp/nginx/dockerfile: Dockerfileports:- 80:80- 443:443#设置数据卷挂载volumes:- /opt/compose_lnmp/nginx/html:/usr/local/nginx/htmlnetworks:lnmp:ipv4_address: 172.18.0.10mysql:container_name: mysqlbuild:context: /opt/compose_lnmp/mysqldockerfile: Dockerfileports:- 3306:3306networks:lnmp:ipv4_address: 172.18.0.20
volumes:- db-data:/usr/local/mysqlprivileged: truephp:container_name: phpbuild:context: /opt/compose_lnmp/phpdockerfile: Dockerfileports:- 9000:9000networks:lnmp:ipv4_address: 172.18.0.30volumes:- db-data:/usr/local/mysql- ./nginx/html:/usr/local/nginx/htmldepends_on:- nginx- mysqlnetworks:lnmp:driver: bridgeipam:config:- subnet: 172.18.0.0/16volumes:db-data:

内容解释如下:

#定义docker-compose版本,可以是2 或 3
version: '3' 定义版本
services:  定义服务nginx:   container_name: nginx     #指定容器的名称为nginxhostname: nginx           #容器的主机名为nginxbuild:                   #构建上下文和Dockerfile的位置context: /opt/compose_lnmp/nginx/ 指明Dockerfile文件目录dockerfile: Dockerfile   dockerfile文件名称ports:           暴露端口- 80:80- 443:443            #将宿主机的80端口映射到容器的80端口,将宿主机的443端口映射到容器的443端口#设置数据卷挂载volumes:- /opt/compose_lnmp/nginx/html:/usr/local/nginx/html   networks:lnmp:                #将该服务连接到名为lnmp的网络,并指定了容器的IPv4地址ipv4_address: 172.18.0.10mysql:   定义第二个服务container_name: mysql   build:context: /opt/compose_lnmp/mysqldockerfile: Dockerfileports:- 3306:3306         #将宿主机的3306端口映射到容器的3306端口networks:    给容器自定义ip地址lnmp:ipv4_address: 172.18.0.20
volumes:       通过顶级卷创建数据卷- db-data:/usr/local/mysqlprivileged: true            #使容器内的root拥有真正的root权限php:   第三个服务是phpcontainer_name: phpbuild:context: /opt/compose_lnmp/phpdockerfile: Dockerfileports:- 9000:9000               #将宿主机的9000端口映射到容器的9000端口networks:lnmp:ipv4_address: 172.18.0.30volumes:- db-data:/usr/local/mysql- ./nginx/html:/usr/local/nginx/htmldepends_on:                    # 声明了该服务依赖于nginx和mysql服务- nginx- mysqlnetworks:                        # 定义了一个叫做lnmp的网络,使用了bridge驱动lnmp:driver: bridgeipam:config:- subnet: 172.18.0.0/16           # 指定了IP地址池的子网范围volumes: 创建顶级卷,因为在版本3不支持volumes_from,需要通过顶级卷来实现容器之间的数据共享db-data:      #db-data 用于 MySQL 数据

1.7.1启动服务

保存到一个名为 docker-compose.yml 的文件中,然后在包含该文件的目录中运行 docker-compose up -d 命令来启动这个环境

1.7.2查看镜像和容器

1.8进入容器登录 mysql 授权

docker exec -it mysql bash
mysql -u root -p
回车
create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123123';
grant all privileges on *.* to 'root'@'%' identified by '123123';
flush privileges;

1.9创建一个新的配置文件 wp-config.php

1.10浏览器访问 wordpress

再次去浏览器访问http://192.168.246.13/wordpress/index.php

如果遇到问题,报错,镜像拉去不下来

Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"  报错yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
yum makecache
# 如果遇到类似dns问题,可修改dns、替换阿里源尝试解决添加下面的
vim /etc/sysctl.conf
net.ipv4.ip_forward=1sysctl -p在ens33网卡中加入
DNS2=114.114.114.114然后重启网卡
systemctl restart networksystemctl restart docker

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

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

相关文章

Terraform代码的check块

check块是Terraform 1.5开始引入的新功能。 过去可以在resource块里的lifecycle块中验证基础设施的状态&#xff0c;check块填补了在apply后验证基础设施状态这一功能的空白。check块允许定义在每次plan以及apply操作后执行的自定义的验证。check块定义的验证逻辑是作为plan和a…

01嵌入式面经

华为嵌入式 stm32单片机和51单片机的区别 架构&#xff1a; STM32单片机&#xff1a;基于ARM Cortex-M系列处理器&#xff0c;具有先进的32位处理能力和丰富的外设资源。51单片机&#xff1a;基于Intel 8051系列处理器&#xff0c;是一种经典的8位单片机&#xff0c;具有较为简…

SpringBoot+Vue+Element-UI实现学生综合成绩测评系统

前言介绍 学生成绩是高校人才培养计划的重要组成部分&#xff0c;是实现人才培养目标、培养学生科研能力与创新思维、检验学生综合素质与实践能力的重要手段与综合性实践教学环节。而学生所在学院多采用半手工管理学生成绩的方式&#xff0c;所以有必要开发学生综合成绩测评系…

MySql 空间索引

在 MySQL 中&#xff0c;直接对几何数据类型&#xff08;如 POINT, LINESTRING, POLYGON 等&#xff09;使用 "几何索引" 的概念并不完全准确&#xff0c;因为 MySQL 不直接提供名为 "几何索引" 的索引类型。但是&#xff0c;你可以为这些几何数据类型创建…

机器学习——2.损失函数loss

基本概念 损失函数也叫代价函数。损失函数就是计算预测结果和实际结果差距的函数&#xff0c;机器学习的过程就是试图将损失函数的值降到最小。 图左&#xff1a;&#xff5c;t_p - t_c&#xff5c; 图右&#xff1a;&#xff08;t_p - t_c&#xff09;**2 代码实…

图像分割入门-Unet++理论与实践

探索 U-net&#xff1a;改进的图像分割神经网络 引言 图像分割是计算机视觉领域中的重要任务&#xff0c;旨在将图像中的每个像素分配到特定的类别或区域。在许多应用中&#xff0c;如医学影像分析、自动驾驶和地块识别等领域&#xff0c;图像分割都扮演着关键角色。 U-net …

echars设置渐变颜色的方法

在我们日常的开发中&#xff0c;难免会遇到有需求&#xff0c;需要使用echars设置渐变的图表&#xff0c;如果我们需要设置给图表设置渐变颜色的话&#xff0c;我们只需要在 series 配置项中 添加相应的属性配置项即可。 方式一&#xff1a;colorStops type&#xff1a;‘lin…

基于EWT联合SVD去噪

一、代码原理 &#xff08;1&#xff09;基于EWT-SVD的信号去噪算法原理 经验小波变换&#xff08;Empirical Wavelet Transform&#xff0c;EWT&#xff09;&#xff1a;EWT是一种基于信号局部特征的小波变换方法&#xff0c;能够更好地适应非线性和非平稳信号的特性。奇异值…

Maria DB 安装(含客户端),看这一篇就够了

文章目录 一 安装前准备1 版本与Win平台对应2 推荐安装 二 安装步骤1 安装主体程序2 添加系统路径Path 三 客户端 一 安装前准备 1 版本与Win平台对应 版本对应关系可参考&#xff1a; https://www.codebye.com/mariadb-deprecated-package-platforms.html。 2 推荐安装 经…

AI工具如何改变我们的工作与生活

AI工具在当今社会中扮演着越来越重要的角色&#xff0c;它们已经开始改变着我们的工作方式和生活方式。在接下来的2000字篇幅中&#xff0c;我将详细探讨AI工具如何影响我们的工作和生活。 AI工具在工作中的影响&#xff1a; 自动化和智能化生产流程&#xff1a; AI工具可以通…

嵌入式开发软件编码规范——C语言编码规范大全总结(规范开发,快乐你我他她它)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》

【driver1】内核模块,设备号,字符驱动

文章目录 1.内核模块&#xff1a;必须包含module.h2.内核模块参数&#xff1a;权限位S_IRUGO是用在sysfs文件系统里2.1 extern&#xff1a;声明来自另一个模块 3.设备号&#xff1a;主设备号对应驱动程序&#xff0c;具有相同主设备号设备使用相同驱动程序&#xff0c;次设备号…

程序员的实用神器

概述 在软件开发的海洋中&#xff0c;程序员们需要依赖一整套实用的工具和系统来指引、加速和优化他们的工作流程。我们从代码编写、版本控制到测试和部署罗列一些广泛认可的“神器”&#xff1a; 1. 代码编辑器和集成开发环境&#xff08;IDE&#xff09; - Visual Studio C…

cURL:命令行下的网络工具

序言 在当今互联网时代&#xff0c;我们经常需要与远程服务器通信&#xff0c;获取数据、发送请求或下载文件。在这些情况下&#xff0c;cURL 是一个强大而灵活的工具&#xff0c;它允许我们通过命令行进行各种类型的网络交互。本文将深入探讨 cURL 的基本用法以及一些高级功能…

linux中各类查看用户的命令(随手记)

在Linux系统中&#xff0c;查看用户信息的命令有很多&#xff0c;而且显示的内容各有各的区别&#xff1a; whoami&#xff1a; 显示当前用户的用户名。 whoamiid&#xff1a; 显示当前用户的UID、GID以及用户和组的名称。 idwho&#xff1a; 显示当前登录的所有用户的信息&…

详说及分享AI工具

现在的AI工具种类繁多&#xff0c;涵盖了多个领域&#xff0c;包括但不限于聊天机器人、搜索引擎、图像生成、写作辅助、音频处理等。以下是一些当前流行的AI工具及其优缺点&#xff0c;并尝试说明最喜欢和最好用的工具及其原因&#xff1a; ChatGPT&#xff1a; 优点&#x…

C++:特殊类的设计 | 单例模式

目录 1、特殊类的设计 2、设计一个类&#xff0c;不能被拷贝 3、设计一个类&#xff0c;只能在堆上创建对象 4、设计一个类&#xff0c;只能在栈上创建对象 5、设计一个类&#xff0c;不能被继承 6、单例模式 1、饿汉模式 2、懒汉模式 1、特殊类的设计 在实际应用场景中…

gateway基本配置详解

Spring Cloud Gateway 是 Spring Cloud 的一个组件&#xff0c;它基于 WebFlux 框架&#xff0c;用于构建 API 网关。API 网关是微服务架构中的一个重要组件&#xff0c;它作为系统的入口&#xff0c;负责处理客户端请求&#xff0c;并将请求路由到相应的服务。以下是 Spring C…

系统镜像地址

系统镜像 Linux 官网下载地址&#xff1a;Downloadhttps://www.centos.org/download/ 阿里云镜像下载地址&#xff1a;https://mirrors.aliyun.com/centos/https://mirrors.aliyun.com/centos/?spma2c6h.13651104.d-2001.6.6554320cwFqB8E 清华大学镜像下载地址&#xff1…

SCI一区 | WOA-BiTCN-BiGRU-Attention多输入单输出回归预测(Matlab)

SCI一区 | WOA-BiTCN-BiGRU-Attention多输入单输出回归预测&#xff08;Matlab&#xff09; 目录 SCI一区 | WOA-BiTCN-BiGRU-Attention多输入单输出回归预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现WOA-BiTCN-BiGRU-A…