当前位置: 首页 > news >正文

通过docker构建基于LNMP的WordPress项目

目录

1.准备nginx

2.准备mysql

3.准备php

4.构建各镜像

5.运行wordpress


1、项目环境:

1.1

(1)公司在实际的生产环境中,需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务进行相关的性能调优和管理工作。

(2)环境描述

主机

操作系统

IP地址

主要软件

Docker

CentOS 7.3 x86_64

192.168.1.101

Docker 19.03

2、任务需求

2.1

(1)使用Docker构建LNMP环境并运行Wordpress网站平台。

(2)限制Nginx容器最多使用500Mb的内存和1G的Swap。

(3)限制Mysql容器写 /dev/sda 的速率为 10 MB/s

(4)将所有容器进行快照,然后将Docker镜像打包成tar包备份到本地。

1.准备nginx

注:可以以上篇博客中nginx构建为基础

上传nginx.conf文件、上传阿里云镜像、上传html目录


2.准备mysql

cd /opt
mkdir mysql
vim Dockerfile 
FROM centos:7 as first
ADD mysql-boost-5.7.44.tar.gz /opt
COPY CentOS-Base.repo /etc/yum.repos.d/
RUN yum -y install ncurses ncurses-devel bison cmake openssl-devel gcc gcc-c++ make && \yum clean all && \cd /opt/mysql-5.7.44/ && \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_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 && \make -j 2 && make installFROM centos:7
COPY --from=first /usr/local/mysql/ /usr/local/mysql/
COPY  my.cnf /etc/my.cnf
RUN useradd -M -s /sbin/nologin mysql &&\chown -R mysql:mysql /usr/local/mysql/ &&\chown mysql:mysql /etc/my.cnf &&\/usr/local/mysql/bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
ENV PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
EXPOSE 3306
CMD ["/usr/local/mysql/bin/mysqld"]vim my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock[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上传阿里云镜像、mysql压缩包

3.准备php

vim Dockerfile
FROM centos:7 as first
ADD php-7.1.10.tar.bz2 /opt/
COPY CentOS-Base.repo /etc/yum.repos.d/
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 && \yum clean all && \cd /opt/php-7.1.10/ && \./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 -j 2 && make install
COPY php.ini /usr/local/php/lib/php.ini
COPY php-fpm.conf /usr/local/php/etc/php-fpm.conf
COPY www.conf /usr/local/php/etc/php-fpm.d/www.confFROM centos:7
COPY --from=first /usr/local/php/ /usr/local/php/
COPY CentOS-Base.repo /etc/yum.repos.d/
RUN useradd -M -s /sbin/nologin nginx &&\
yum -y install gd \
libjpeg-devel \
libpng-devel \
freetype-devel \
libxml2-devel \
zlib-devel \
curl-devel \
openssl-devel &&\
yum clean all
EXPOSE 9000
CMD ["/usr/local/php/sbin/php-fpm", "-F"]上传php压缩包、阿里云镜像、php-fpm.conf  php.ini  www.conf

4.构建各镜像

cd /opt/nginx_bian    #构建nginx镜像
docker build -t nginx:lnmp .
cd /opt/php    #构建php镜像
docker build -t php:lnmp .
docker network create --subnet=172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork   #自定义网络
docker network ls 

测试nginx、php

cd /opt/nginx_bian/docker run --name nginx -d -p 80:80 -v /opt/nginx_bian/html:/usr/local/nginx/html/ --network mynetwork --ip 172.18.0.10 nginx:lnmp
docker ps -a


docker run --name php -d -p 9000:9000 --volumes-from nginx --network mynetwork --ip 172.18.0.30 php:lnnmpdocker ps -a

docker run --name php -d -p 9000:9000 --volumes-from nginx --network mynetwork --ip 172.18.0.30 php:lnnmp
docker ps -a

cd /opt/mysql
docker build -t mysql:lnmp .  #构建mysql镜像docker run --name mysql -d --privileged -v /usr/local/mysql --network mynetwork --ip 172.18.0.20 mysql:lnmp   #启动容器
docker ps -a

mysql配置

docker exec -it mysql bash
mysqladmin -u root -p password "abc123"  #设置密码
mysql -u root -pabc123  #登录mysql
grant all on *.* to 'root'@'%' identified by 'abc123';
quit
exit
docker stop php
docker rm phpdocker run --name php -d -p 9000:9000 --volumes-from nginx --volumes-from mysql --network mynetwork --ip 172.18.0.30 php:lnnmp


浏览器验证



5.运行wordpress

浏览器访问:http://192.168.9.113/wordpress/index.php

docker exec -it mysql bash
mysql -u root -pabc123
create database wordpress;
grant all on wordpress.* to 'wordpress'@'%' identified by 'admin123';
flush privileges;
quit
exit
cd /opt/nginx_bian/html
chmod 777 wordpress/


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微信小程序基本语法
  • WPF实现一个带旋转动画的菜单栏
  • js | 原型链
  • 慢查询sql索引优化
  • Docker:基础概念、架构与网络模式详解
  • Linux先行一步
  • java通过pdf-box插件完成对pdf文件中图片/文字的替换
  • 鸿蒙Navigation路由能力汇总
  • 自动化测试高级控件交互方法:TouchAction、触屏操作、点按,双击,滑动,手势解锁!
  • 编程的法则 迪米特法则(Law of Demeter)也称为“最少知识原则(Principle of Least Knowledge)包括如何实践
  • 微服务之间Feign调用
  • mac M1 创建Mysql8.0容器
  • C# Blazor Server与JS互操作无法获取大数据量返回值
  • 2024-07-13 Unity AI状态机2 —— 项目介绍
  • Dify中的高质量索引模式实现过程
  • 345-反转字符串中的元音字母
  • Android交互
  • JavaScript异步流程控制的前世今生
  • Java比较器对数组,集合排序
  • Java编程基础24——递归练习
  • LeetCode18.四数之和 JavaScript
  • nfs客户端进程变D,延伸linux的lock
  • Python学习之路13-记分
  • spring学习第二天
  • vue自定义指令实现v-tap插件
  • Vue组件定义
  • 对超线程几个不同角度的解释
  • 构建工具 - 收藏集 - 掘金
  • 聊聊redis的数据结构的应用
  • 实习面试笔记
  • 使用docker-compose进行多节点部署
  • 一些css基础学习笔记
  • 用 Swift 编写面向协议的视图
  • 昨天1024程序员节,我故意写了个死循环~
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • $NOIp2018$劝退记
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (12)Hive调优——count distinct去重优化
  • (7)摄像机和云台
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (k8s)Kubernetes本地存储接入
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (三)mysql_MYSQL(三)
  • (三分钟)速览传统边缘检测算子
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .Net IOC框架入门之一 Unity
  • .NET编程——利用C#调用海康机器人工业相机SDK实现回调取图与软触发取图【含免费源码】
  • .NET面试题(二)
  • .net通过类组装数据转换为json并且传递给对方接口
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用