Dockerfile创建镜像LNMP+WordPress

目录

实验部署

nginx

配置mysql

配置php


实验部署

INMP+wordpress

nginx 172.111.0.10 docker-nginx

mysql 172.111.0.20 docker-mysql

php 172.111.0.30 docker-php

nginx
关闭防火墙和安全机制在opt目录创建nginx MySQL php目录
cd nginx mysql php
vim Dockerfile#声明基础镜像
FROM centos:7
#安装依赖环境
RUN yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel && useradd -M -s /sbin/nologin nginx
#解压源码包
ADD nginx-1.22.0.tar.gz /usr/local/src
#指定工作目录
WORKDIR /usr/local/src/nginx-1.22.0
#配置和编译安装
RUN ./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module && make -j 4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
COPY nginx.conf /usr/local/nginx/conf/
ADD wordpress-6.4.2-zh_CN.tar.gz /usr/local/nginx/html
RUN chmod 777 -R /usr/local/nginx/html
EXPOSE 80
#创建容器内的数据卷,即可以对外给宿主机挂载,也可以对内,给容器作为挂载点
VOLUME ["/usr/local/nginx/html/"]
#设定容器启动时的命令
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]nginx.conf文件
worker_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;fastcgi_pass   172.111.0.30:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;include        fastcgi_params;}
}
}创建自定义网络
docker network create --subnet=172.111.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork
查看自定义网段
docker network ls
删除自定义网段 
docker network rm -rfdocker build -t nginx:lnmp .
docker run -itd --name nginx1  -p80:80 -v /opt/nginx:/opt/nginxlogs --net mynetwork --ip 172.111.0.10 nginx:lnmp
配置mysql
配置mysqlcd /mysql 
把源码拖到mysql目录下
vim Dockerfile
#声明基础镜像
FROM centos:7
#安装依赖环境
RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c++ make && useradd -M -s /sbin/nologin mysql
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_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 && 
make -j 4 && make install
COPY my.cnf /etc/my/cnf
#设置暴漏端口
EXPOSE 3306
RUN chown -R mysql:mysql /usr/local/mysql/ && chown mysql:mysql /etc/my.cnf
WORKDIR /usr/local/mysql/bin/
RUN ./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/ && systemctl daemon-reload
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
VOLUME ["/usr/local/mysql"]
ENTRYPOINT ["/usr/sbin/init"]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 = 1
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.logsql_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_QUOTESdocker build -t mysql:lnmp .
docker run -itd --name mysql1 -p 3306:3306 --privileged -v /opt/mysql1:/opt/mysql --net mynetwork --ip 172.111.0.20 mysql:lnpmdocker exec -it mysql1 bash
mysql -uroot -p
create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by '123456';
flush privileges;
配置php
把源码文件拖到php目录下
vim Dockerfile 
FROM centos:7
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 -j 4 && make install
ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
COPY php.ini /usr/local/php/lib
COPY php-fpm.conf /usr/local/php/etc/
COPY www.conf /usr/local/php/etc/php-fpm.d/
EXPOSE 9000
ENTRYPOINT ["/usr/local/php/sbin/php-fpm","-F"]
docker build -t php:lnmp .
docker run -itd --name php -p 9000:9000 --volumes-from nginx --volumes-from mysql1 --net mynetwork --ip 172.111.0.30 php:lnmp20.0.0.30/wordpress/

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

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

相关文章

VueRouter的编程式导航和导航守卫

编程式导航 Vue Router 提供了编程式导航的方法,这意味着你可以在 JavaScript 中编写代码来导航到不同的路由。这通常在处理用户交互或其他异步操作时很有用。 要实现编程式导航,你可以使用 this.$router.push() 方法。这个方法接受一个路由对象或者一…

Arduino中读取SD卡文本文件数据

1、硬件 2、代码 #include <SD.h> #include <SPI.h> // needed for Arduino versions later than 0018const long _1000msTime 1000; // 1000 milli seconds unsigned long _1000msLastTime;File myFile; int date; int Lastdate; String strDate;//…

什么是分布式光伏发电系统?哪些地点适合建设?

随着全球环保意识的提高&#xff0c;光伏发电以发电效率高、环境污染小和能源来源丰富等优势脱颖而出。光伏发电是指利用太阳能辐射直接转变成电能的发电方式&#xff0c;能够有效帮助减少二氧化碳。 分布式光伏发电特指在用户场地附近建设&#xff0c;运行方式以用户侧自发自…

YOLOv5独家原创改进:SPPF自研创新 | SPPF与感知大内核卷积UniRepLK结合,大kernel+非膨胀卷积提升感受野

💡💡💡本文自研创新改进:SPPF与感知大内核卷积UniRepLK结合,大kernel+非膨胀卷积,使SPPF增加大kernel,提升感受野,最终提升检测精度 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创新(原创),…

垃圾回收 (GC) 在 .NET Core 中是如何工作的?(二)

接上一篇文章垃圾回收 (GC) 在 .NET Core 中是如何工作的&#xff1f;-CSDN博客 GC 会分配堆段&#xff0c;其中每个段都是一系列连续的内存。 置于堆中的对象归类为 3 个代系之一&#xff1a;0、1 或 2。 代系可确定 GC 尝试在应用不再引用的托管对象上释放内存的频率。 编号…

【亚马逊云科技】使用Vscode Amazon-Q完成GUI界面粉笔脚本开发

本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 前言 亚马逊云科技-Q&#xff0c;可以快速获得紧迫问题的相关答案&#xff0c;解决问题…

如何选择适合自己的API:实用指南

导语&#xff1a;在当今的软件开发世界中&#xff0c;API&#xff08;应用程序接口&#xff09;已成为数据传输和功能调用的重要桥梁。然而&#xff0c;面对众多的API&#xff0c;如何选择适合自己的API成为了一个挑战。本文将为你提供一份实用指南&#xff0c;帮助你选择适合自…

Linux常用长命令总结

1、批量杀死进程 程序意外终止&#xff0c;但进程还在占用资源&#xff0c;如何批量杀死多进程&#xff1f; 可以先使用命令 ps aux 查看所有被启动进程的相同部分&#xff0c;使用grep过滤&#xff0c;然后运行语句&#xff1a; ps -ef | grep train.py | awk {print $2} |…

生物信息学分析领域领先的特制语言环境NGLess(Next Generation Less)介绍、安装配置和详细使用方法

介绍 NGLess&#xff08;Next Generation Less&#xff09;是一种用于生物信息学分析的领先的领域特定语言&#xff08;DSL&#xff09;。它旨在简化和加速NGS&#xff08;Next Generation Sequencing&#xff09;数据的分析过程。NGLess具有清晰的语法和功能&#xff0c;使用户…

使用React将JSON渲染为组件

使用React将JSON 渲染为组件 实现思路 要将JSON Schema渲染为React组件&#xff0c;我们可以按照以下步骤进行实现&#xff1a; 得到JSON . 构建自定义组件 。 嵌套渲染功能实现 。 示例代码 import React, { useState, useEffect } from "react";interface Sc…

机器翻译:跨越语言边界的智能大使

导言 机器翻译作为人工智能领域的瑰宝&#xff0c;正在以前所未有的速度和精度&#xff0c;为全球沟通拓展新的可能性。本文将深入研究机器翻译的技术原理、应用场景以及对语言交流未来的影响。 1. 简介 机器翻译是一项致力于通过计算机自动将一种语言的文本翻译成另一种语言的…

[Unity]关于Unity接入Appsflyer并且打点支付

首先需要去官方下载Appsflyer的UnityPackage 链接在这afPackage 然后导入 导入完成 引入此段代码 using AppsFlyerSDK; using System.Collections; using System.Collections.Generic; using UnityEngine;public class AppflysManager : MonoBehaviour {public static App…

测试总监给我分享的《接口自动化测试》总结,让我成功的入门接口自动化门槛......

前两天在测试技术交流群里&#xff0c;听了一位字节跳动的测试总监分享的接口自动化测试的内容&#xff0c;对接口自动化更加了解了&#xff0c;也为自己接下来在公司实施接口自动化项目提供了思路。 前言 自动化测试&#xff0c;算是近几年比较火热的一个话题&#xff0c;当…

dcf配置解析机制(元数据)

dcf配置解析机制(元数据) openguass的dcf是一个分布式一致性协议的实现&#xff08;基于paxos协议&#xff0c;类似raft&#xff09;&#xff0c;能够实现分布式一致性数据传输和存储。 dcf通过传入json字符串来传递配置数据&#xff0c;如&#xff1a; #1. 使能dcf特性开关…

现代C++ 实现单例模式

传统写法有什么问题 如果你了解过单例模式&#xff0c;双重检查锁定模式&#xff08;Double-Checked Locking Pattern&#xff0c;后文简称DCLP&#xff09;的写法你一定不会陌生&#xff0c;甚至你或许认为它是最正确的代码。 class Singleton { public://获取单例Singleton…

linux 内核同步互斥技术之顺序锁

顺序锁 顺序锁区分读者和写者&#xff0c;和读写自旋锁相比&#xff0c;它的优点是不会出现写者饿死的情况。读者不会阻塞写者&#xff0c;读者读数据的时候写者可以写数据。顺序锁有序列号&#xff0c;写者把序列号加 1&#xff0c;如果读者检测到序列号有变化&#xff0c;发…

影视泛目录如何快速提升百度,搜狗权重?

要想快速提升影视泛目录网站的百度、搜狗权重&#xff0c;需要注意以下几点&#xff1a; 【苹果影视泛目录】部分功能 1、泛目录自由控制不影响本身程序使用 2、开关控制正常采集数据拉取本地词库与本地描述 3、正常页面干扰码开关 4、蜘蛛白名单 5、泛目录防重复功能 6.8版本…

解决:Component name “index“ should always be multi-word

原因 要求组件名称以驼峰格式命名&#xff0c;自定义组件名称应该由多单纯组成&#xff0c;防止和html标签冲突&#xff0c;所以index.vue 会报错 解决 1、按照规则驼峰格式&#xff0c;如&#xff1a;appIndex.vue 2、若有.eslintrc.js文件&#xff0c;并在规则中(rules)关…

数据挖掘-08-基于Python实现时间序列分析建模(ARIMA 模型)(包括数据和代码)

文章目录 0. 数据代码下载1. 背景描述2. 预测目的3. 数据总览4. 数据预处理4.1数据描述性统计与清洗a. 导入程序库b. 读取数据c. 查看统计信息和空值d. 查看是否有重复数据以及清理重复数据e. 空值清理f. 针对清洗后的数据进行统计分析 5. 探索性数据分析5.1 数据分析 6. 构建 …

在线文本对比工具

在线文本对比工具&#xff1a; Diff Checker: 网址&#xff1a;https://www.diffchecker.com/ Text Compare: 网址&#xff1a;https://text-compare.com/ Mergely: 网址&#xff1a;https://www.mergely.com/ Draftable Compare: 网址&#xff1a;https://draftable.com/co…