docker-compose-lnmp-wordpress

news/2024/10/24 19:46:59/

使用 docker-compose 在 CentOS 7 上编写并部署 LNMP (Linux, Nginx, MySQL, PHP) 环境的 YAML

文章目录

  • 部署步骤:
    • 1. 安装 Docker 和 Docker Compose
      • 1.1安装 Docker:
      • 1.2安装 Docker Compose:
    • 2.创建目录结构
    • 3.编写docker-compose.yml
    • 4.nginx
      • 4.1编写nginx的Dockerfile
      • 4.2配置ngin.conf
      • 4.3将下列文件放入/opt/lnmp/nginx目录
      • 4.4创建html目录解压wordpress
    • 5.mysql
      • 5.1编写mysql的Dockerfile
      • 5.2配置my.cnf文件
      • 5.3将下列文件放入/opt/lnmp/mysql目录
    • 6.php
      • 6.1编写php的Dockerfile
      • 6.2配置www.conf
      • 6.3配置vim php.ini
      • 6.4vim php-fpm.conf
      • 6.5将下列文件放入目录/opt/lnmp/php
    • 7.上传docker-compose文件至/usr/local/bin目录下
    • 8.启动
    • 10.wordpress网页登录配置

部署步骤:

1. 安装 Docker 和 Docker Compose

在 CentOS 7 上,首先安装 Docker 和 Docker Compose。

1.1安装 Docker:

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce-20.10.18 docker-ce-cli-20.10.18 containerd.io-20.10.18
systemctl enable --now docker

1.2安装 Docker Compose:

cd /usr/local/bin
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

2.创建目录结构

创建目录以存储 配置文件和网站内容:

cd /opt
mkdir -p /lnmp/nginx /lnmp/mysql /lnmp/php 

dockercomposeyml_30">3.编写docker-compose.yml

cd /opt/lnmp
vim /opt/docker-compose.ymlversion: '3'
services:nginx:container_name: nginxhostname: nginxbuild:context: /opt/lnmp/nginx/dockerfile: Dockerfileports:- "80:80"- "443:443"volumes:- /opt/lnmp/nginx/html:/usr/local/nginx/htmlnetworks:lnmp:ipv4_address: 172.18.0.10version: '3'
services:nginx:container_name: nginxhostname: nginxbuild:context: /opt/lnmp/nginx/dockerfile: Dockerfileports:- "80:80"- "443:443"volumes:- /opt/lnmp/nginx/html:/usr/local/nginx/htmlnetworks:lnmp:ipv4_address: 172.18.0.10mysql:container_name: mysqlbuild:context: /opt/lnmp/mysqldockerfile: Dockerfileports:- "3306:3306"networks:lnmp:ipv4_address: 172.18.0.22volumes:- db-data:/usr/local/mysqlphp:container_name: phpbuild:context: /opt/lnmp/phpdockerfile: Dockerfileports:- "9000:9000"networks:lnmp:ipv4_address: 172.18.0.30volumes:- db-data:/usr/local/mysql- /opt/lnmp/nginx/html:/usr/local/nginx/htmldepends_on:- nginx- mysqlnetworks:lnmp:driver: bridgeipam:config:- subnet: 172.18.0.0/16volumes:db-data:

4.nginx

4.1编写nginx的Dockerfile

cd /myproject/nginx
vim Dockerfile    FROM centos:7
MAINTAINER <ztw-nginx>
ADD CentOS-Base.repo /etc/yum.repos.d/
RUN yum clean all && yum makecache && \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 -j4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
ADD nginx.conf /usr/local/nginx/conf/
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80 443
ENTRYPOINT ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]

4.2配置ngin.conf

cd /opt/lnmp/nginx
vim nginx.conflocation ~ \.php$ {root           html;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;}

4.3将下列文件放入/opt/lnmp/nginx目录

nginx-1.12.0.tar.gz
wordpress-4.9.4-zh_CN.tar.gz
CentOS-Base.repo

4.4创建html目录解压wordpress

mkdir -p /opt/lnmp/nginx/html
tar zxvf /opt/lnmp/nginx/wordpress-4.9.4-zh_CN.tar.gz -C /opt/lnmp/nginx/html

5.mysql

5.1编写mysql的Dockerfile

cd /opt/lump/mysql
vim DockerfileFROM centos:7
MAINTAINER <ztw-php>
FROM centos:7
ADD CentOS-Base.repo /etc/yum.repos.d/
RUN yum clean all && yum makecache fast && \yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make perl wget openssl openssl-devel libaio libaio-devel
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 \-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$(nproc) && make install
ADD my.cnf /etc/my.cnf
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/RUN /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
EXPOSE 3306
CMD ["/usr/local/mysql/bin/mysqld", "--user=mysql", "--console"]

5.2配置my.cnf文件

cd /opt/lnmp/mysql
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

5.3将下列文件放入/opt/lnmp/mysql目录

mysql-boost-5.7.20.tar.gz
CentOS-Base.repo
my.cnf

6.php

6.1编写php的Dockerfile

ADD CentOS-Base.repo /etc/yum.repos.d/
RUN yum clean all && yum makecache fast && \yum install -y 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 && \yum clean all && rm -rf /var/cache/yumADD php-7.1.10.tar.bz2 /usr/local/src/
WORKDIR /usr/local/src/php-7.1.10RUN ./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 installENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATHADD 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 9000CMD ["/usr/local/php/sbin/php-fpm", "-F"]

6.2配置www.conf

cd /opt/lnmp/php
vim www.conf user = nginx
group = nginx
listen = 172.19.0.30:9000

6.3配置vim php.ini

cd /opt/lnmp/php
vim php.inidate.timezone = Asia/Shanghai
mysqli.default_socket = /usr/local/mysql/mysql.sock

6.4vim php-fpm.conf

cd /opt/lnmp/php
vim php-fpm.confpid = run/php-fpm.pid

6.5将下列文件放入目录/opt/lnmp/php

CentOS-Base.repophp-7.1.10.tar.bz2php-fpm.conf  php.ini  www.conf

dockercomposeusrlocalbin_337">7.上传docker-compose文件至/usr/local/bin目录下

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

8.启动

cd /opt/lnmp
docker-compose -f docker-compose.yml up -d

9.进入容器数据库设置mysql密码和权限

9.1进入数据库

docker ps -a
docker exec -it b690cce7f45d /bin/bash

9.2数据库配置

mysql
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
CREATE DATABASE wordpress;
FLUSH PRIVILEGES;
exit;

9.3验证配置

mysql -u root -p123456
show databases;

exit
mysql -u root -p888888

10.wordpress网页登录配置

192.168.88.90/wordpress/index.php

参考步骤7

https://blog.csdn.net/2301_80613136/article/details/142905803?fromshare=blogdetail&sharetype=blogdetail&sharerId=142905803&sharerefer=PC&sharesource=2301_80613136&sharefrom=from_link


http://www.ppmy.cn/news/1541646.html

相关文章

2023 icpc南京(待更新)

文章目录 [I. Counter](https://codeforces.com/gym/104821/problem/I)[C. Primitive Root](https://codeforces.com/gym/104821/problem/C)[F. Equivalent Rewriting](https://codeforces.com/gym/104821/problem/F)[G. Knapsack](https://codeforces.com/gym/104821/problem/…

查看linux的版本

在 Linux 系统中&#xff0c;有多种方法可以查看当前系统的版本信息。以下是一些常用的方法&#xff1a; 1. 使用 uname 命令 uname 命令可以显示系统的内核版本和其他相关信息。 uname -a这个命令会输出类似如下的信息&#xff1a; Linux hostname 5.4.0-88-generic #99-U…

webpack生成的SourceMap更改生成路径

文章目录 一、基本概念二、output.sourceMapFilename三、SourceMapDevToolPlugin 一、基本概念 Source Map 本身是一种文件&#xff0c;它提供了原始文件与编译后的文件之间的映射规则&#xff0c;使得开发者能够调试原始代码&#xff0c;帮助开发人员进行调试和排查。在生成的…

基于docker-compose编排部署微服务快速开发框架

1. 规划节点 节点规划&#xff0c;见表1。 表1 节点规划 IP主机名节点10.24.2.10masterdocker-compose节点 2. 基础准备 Docker和Docker Compose已安装完成&#xff0c;将提供的软件包Pig.tar.gz上传至master节点/root目录下并解压。 案例实施 1. 基础环境准备 &#x…

【LeetCode:1160. 拼写单词 + 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

记录一次局域网内文件共享

#局域网内文件共享 局域网内文件共享 一.背景介绍 需求&#xff1a;在安全需求背景下&#xff0c;实现局域网内文件访问与修改 &#xff08;即&#xff1a;禁止wx,qq,云server等传输&#xff09; 作者的实验条件&#xff1a; win11主机&#xff0c;win10虚拟机 二.实验过程…

linux网桥两个物理网

1、实验目的 将一台Linux主机配置为网桥,将两台在不同网络,ip地址却在同一网段的设备连接起来。 主机 en33 ens37 A 192.168.10.10 - B 192.168.10.11 - Bridge 无地址 无地址 准备3台虚拟机,主机A配置一块网卡,主机B配置一块网卡,主机Bridge配置2块网卡 主机A在vmnet2网…

2024项目管理软件,不融入敏捷开发怎么行?

一、项目管理软件的重要性 在当今快节奏的商业环境中&#xff0c;项目管理软件的重要性愈发凸显。随着市场竞争的不断加剧&#xff0c;企业面临着越来越多的挑战&#xff0c;项目的复杂性和不确定性也在不断增加。在这样的背景下&#xff0c;项目管理软件成为了团队高效规划、…