使用docker搭建LNMP架构

目录

环境准备

下载安装包

服务器环境

任务分析

nginx部分

建立工作目录

编写 Dockerfile 脚本

准备 nginx.conf 配置文件

生成镜像

创建自定义网络

启动镜像容器

验证nginx

MySQL部分

建立工作目录

编写 Dockerfile

准备 my.cnf 配置文件

生成镜像

启动镜像容器

验证mysql

PHP部分

建立工作目录

编写 Dockerfile 脚本

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

生成镜像

启动镜像容器

验证 php

启动 wordpress 服务

mysql 授权

浏览器测试访问


  • 在一台主机上使用 Docker 创建LNMP服务并运行WordPress网站平台

NMP架构是一种用于运行动态网站或服务器的自由软件组合,它的名称取自其各个组成部分的首字母缩写。具体而言,LNMP代表Linux、Nginx、MySQL和PHP/Python/Perl,这四个元素共同构成了一套完整的服务器架构。

  • Linux: 作为操作系统,提供服务器的基础环境。

  • Nginx: 充当Web服务器,负责处理客户端的请求并向后端服务器传递这些请求。

  • MySQL: 作为关系型数据库管理系统,用于存储和管理数据。

  • PHP/Python/Perl: 用于处理动态内容和服务器端脚本。

LNMP架构在搭建和部署方面具有一定的灵活性和性能优势,因此被广泛用于运行各种动态网站和应用。这种架构的选择取决于项目的具体需求,例如使用PHP、Python或Perl等不同的服务器端脚本语言。

环境准备

下载安装包

准备的是这些安装包

mysql-boost-5.7.20.tar.gz
nginx-1.12.0.tar.gz
php-7.1.10.tar.bz2
wordpress-4.9.4-zh_CN.tar.gz

服务器环境

基于 Docker 的服务器环境,其中运行了三个容器分别用于 Nginx、MySQL 和 PHP。

Nginx 容器

  • 容器名称: Docker-Nginx

  • 操作系统: CentOS 7

  • IP 地址: 172.20.0.10

  • 主要软件: Nginx

MySQL 容器

  • 容器名称: Docker-Mysql

  • 操作系统: CentOS 7

  • IP 地址: 172.20.0.20

  • 主要软件: MySQL

PHP 容器

  • 容器名称: Docker-php

  • 操作系统: CentOS 7

  • IP 地址: 172.20.0.30

  • 主要软件: PHP

这种容器化的架构使得每个服务都能够在独立的环境中运行,提高了灵活性和可维护性。

任务分析

  • 使用 Docker 构建 LNMP 环境并运行 Wordpress 网站平台

  • 限制 Nginx 容器最多使用 500MB 的内存和 1G 的 Swap

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

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

nginx部分

建立工作目录

mkdir /opt/nginx
#上传nginx-1.12.0.tar.gz、wordpress-4.9.4-zh_CN.tar.gz 到 /opt/nginx/ 目录中
cd /opt/nginx

编写 Dockerfile 脚本

vim Dockerfile

FROM centos:7
MAINTAINER this is nginx image <lnmp>
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 -j 4 && 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
VOLUME [ "/usr/local/nginx/html/" ]
CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]

这是一个 Dockerfile 文件,用于构建一个包含 Nginx 1.12.0 和 WordPress 的镜像。以下是对每个部分的简要解释:

  • FROM centos:7: 基础镜像是 CentOS 7。

  • MAINTAINER: 指定镜像的维护者信息。

  • 安装依赖和创建 Nginx 用户:

RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make; \
    useradd -M -s /sbin/nologin nginx
  • 添加 Nginx 源码文件并设置工作目录:
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0
  • 使用 configure 构建 Nginx:
RUN ./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-http_stub_status_module; \
    make -j 4 && \
    make install
  • 设置环境变量 PATH:
ENV PATH /usr/local/nginx/sbin:$PATH
  • 添加 Nginx 配置文件 nginx.conf:
ADD nginx.conf /usr/local/nginx/conf/
  • 添加 WordPress 源码文件并设置目录权限:
ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html
RUN chmod 777 -R /usr/local/nginx/html/
  • 暴露 Nginx 默认端口 80:
EXPOSE 80
  • 定义数据卷:
VOLUME [ "/usr/local/nginx/html/" ]
  • 设置启动命令为启动 Nginx:
CMD [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]

这个 Dockerfile 创建一个包含 Nginx 1.12.0 和 WordPress 的镜像。它配置了 Nginx 的基本参数,并将 WordPress 安装在 Nginx 的默认 HTML 目录下。

准备 nginx.conf 配置文件

#复制nginx.conf到/opt/nginx/
cp /usr/local/nginx/conf/nginx.conf /opt/nginx/

vim nginx.conf

egrep -v "^(.)*#(.)*$" nginx.conf | grep -v "^$" #查看

配置文件的主要部分解释:

  • worker_processes 1;:指定Nginx使用一个worker进程。在实际生产环境中,可能需要根据服务器的CPU核心数量调整这个值。

  • events 块:

  • worker_connections 1024;:设置每个worker进程的最大并发连接数。

  • http 块:

  • include mime.types;:引用了一个包含了MIME类型的文件,以确保Nginx正确地处理各种文件类型。

  • default_type application/octet-stream;:指定默认的MIME类型为二进制流。

  • sendfile on;:启用sendfile指令,用于在磁盘和网络之间直接传输文件,提高性能。

  • keepalive_timeout 65;:指定客户端与服务器之间的持续连接超时时间。

  • server 块:

  • listen 80;:指定Nginx监听端口80。

  • server_name localhost;:指定服务器名为localhost。

  • charset utf-8;:设置字符集为UTF-8。

  • location / 块:

    • root html;:指定Web根目录为html。

    • index index.html index.php;:定义默认的索引文件。

  • error_page 块:

    • 定义处理500、502、503、504错误的页面。
  • location ~ \.php$ 块:

    • 匹配以.php结尾的URL。

    • root html;:指定PHP文件的根目录。

    • fastcgi_pass 172.20.0.30:9000;:将PHP请求传递给FastCGI服务器,此处的IP和端口应与您的PHP-FPM服务器配置一致。

    • 其余的参数配置用于传递必要的信息给FastCGI服务器。

生成镜像

docker build -t nginx:lnmp .
docker images

如果出现下面这个错误

ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

这个错误表明系统上 Docker 守护进程没有启动,或者你的用户没有足够的权限连接到 Docker 守护进程。

  • 启动 Docker 守护进程:
sudo systemctl start docker
  • 将 Docker 守护进程设置为开机启动:
sudo systemctl enable docker
  • 确保您的用户添加到 Docker 用户组:
sudo usermod -aG docker $USER

记得注销并重新登录,以使组成员身份得到更新。

  • 重新运行 Docker 命令:
docker build -t nginx:lnmp .

创建自定义网络

docker network create --subnet=172.20.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork

#检查
docker network ls
ifconfig docker1

启动镜像容器

docker run -d --name nginx -p 80:80 -m 500m --memory-swap 1g --net mynetwork --ip 172.20.0.10 nginx:lnmp

这是一个用于在 Docker 中运行 Nginx 服务的命令。

  • docker run: 运行一个 Docker 容器。

  • -d: 在后台运行容器。

  • --name nginx: 为容器指定名称为 "nginx"。

  • -p 80:80: 将容器的端口 80 映射到主机的端口 80,使得可以通过主机的端口 80 访问容器中运行的 Nginx 服务。

  • -m 500m: 限制容器的内存使用为 500 MB。

  • --memory-swap 1g: 设置容器的内存加交换空间的总限制为 1 GB。

  • --net mynetwork: 将容器连接到名为 "mynetwork" 的网络。

  • --ip 172.20.0.10: 为容器指定 IP 地址为 172.20.0.10。

  • nginx:lnmp: 使用 "nginx:lnmp" 镜像来运行容器。这表示使用了一个包含 Nginx 和 LNMP(Linux、Nginx、MySQL、PHP)环境的镜像。

总体而言,这个命令的目的是在 Docker 中创建并运行一个名为 "nginx" 的容器,该容器使用指定的配置和镜像来提供 Nginx 服务。

检查

docker ps
#显示当前正在执行的容器的基本信息,如容器 ID、名称、状态、端口映射等。

docker inspect nginx
#获取有关指定 Docker 容器(这里是 "nginx")的详细信息

这部分输出是关于 Docker 容器的网络配置的一部分。在这里,我们可以看到容器连接到一个名为 "mynetwork" 的网络,并被分配了 IPv4 地址 "172.20.0.10"。

具体来说:

  • "Networks" 表示容器所连接的网络部分。

  • "mynetwork" 是网络的名称。

  • "IPAMConfig" 包含有关 IP 地址管理的配置信息。

  • "IPv4Address" 是容器在该网络上分配的 IPv4 地址,这里是 "172.20.0.10"。

这表明容器 "nginx" 在网络 "mynetwork" 中拥有 IP 地址 "172.20.0.10"。这种网络配置使得容器可以在这个网络上进行通信,同时通过 Docker 主机上的端口映射可以与外部进行交互。

验证nginx

curl http://192.168.41.31:80 

这个 curl 命令向指定的地址发送 HTTP 请求,并显示了该地址返回的 HTML 内容。在这个例子中,它向 http://192.168.41.31:80 发送了请求,并收到了 Nginx 的欢迎页面的 HTML 响应。

响应内容表明 Nginx 服务器已成功安装并正在运行。它提供了一些关于 Nginx 的基本信息,包括欢迎消息、安装成功提示以及一些相关的链接,如官方文档和商业支持。

MySQL部分

建立工作目录

mkdir /opt/mysql
cd /opt/mysql
#传入mysql安装包mysql-boost-5.7.20.tar.gz到/opt/mysql

编写 Dockerfile

vim Dockerfile 

FROM centos:7
MAINTAINER this is mysql image <lnmp>
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 -j4;make install
ADD 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 enable mysqld
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
VOLUME [ "/usr/local/mysql" ]
CMD ["/usr/sbin/init"]

这是一个 Dockerfile 文件,用于构建一个包含 MySQL 5.7.20 的镜像。以下是对每个部分的简要解释:

  • FROM centos:7: 基础镜像是 CentOS 7。
  • MAINTAINER: 指定镜像的维护者信息。
  • 安装依赖和创建 MySQL 用户:
RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c++ make; \
    useradd -M -s /sbin/nologin mysql
  • 添加 MySQL 源码文件并设置工作目录:
ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
WORKDIR /usr/local/src/mysql-5.7.20/
  • 使用 CMake 构建 MySQL:
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 -j4; \
    make install
  • 添加 MySQL 配置文件 my.cnf:
ADD my.cnf /etc/my.cnf
  • 暴露 MySQL 默认端口 3306:
EXPOSE 3306
  • 修改文件和目录权限:
RUN chown -R mysql:mysql /usr/local/mysql/; \
    chown mysql:mysql /etc/my.cnf
  • 设置工作目录并初始化 MySQL 数据库:
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 enable mysqld
  • 设置环境变量 PATH 和定义数据卷:
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
VOLUME [ "/usr/local/mysql" ]
  • 设置启动命令为 /usr/sbin/init
CMD ["/usr/sbin/init"]

这个 Dockerfile 创建一个包含 MySQL 5.7.20 的镜像,配置了一些基本的参数和文件路径。

准备 my.cnf 配置文件

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 = 1

sql_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配置文件的示例,通常位于my.cnfmy.ini文件中。以下是对其中一些重要配置项的解析:

  • [client] 部分:

  • port = 3306: 客户端连接MySQL服务器的端口号。

  • socket=/usr/local/mysql/mysql.sock: 指定MySQL服务器的Unix套接字文件。

  • [mysqld] 部分:

  • user = mysql: MySQL服务运行的用户。

  • basedir=/usr/local/mysql: MySQL安装的基本目录。

  • datadir=/usr/local/mysql/data: 存储数据库数据文件的目录。

  • port = 3306: MySQL服务器监听的端口号。

  • character-set-server=utf8: 服务器使用的字符集。

  • pid-file = /usr/local/mysql/mysqld.pid: 保存MySQL服务器进程ID的文件路径。

  • socket=/usr/local/mysql/mysql.sock: MySQL服务器的Unix套接字文件路径。

  • bind-address = 0.0.0.0: MySQL服务器绑定的IP地址,0.0.0.0表示绑定到所有可用的网络接口。

  • skip-name-resolve: 禁用DNS解析,提高性能。

  • max_connections=2048: 允许的最大连接数。

  • default-storage-engine=INNODB: 默认的存储引擎。

  • max_allowed_packet=16M: 允许的最大数据包大小。

  • server-id = 1: 为服务器指定唯一ID,通常用于主从复制。

  • sql_mode: SQL模式设置,包括一系列启用或禁用特定SQL语法规则的选项。

生成镜像

docker build -t mysql:lnmp .

docker images

启动镜像容器

docker run --name=mysql --privileged --device-write-bps /dev/sda:10M -v /usr/local/mysql --net mynetwork --ip 172.20.0.20 -d mysql:lnmp

这是一个用于在Docker中运行MySQL容器的命令。以下是对该命令的解析:

  • docker run: 启动一个新的Docker容器。

  • --name=mysql: 为容器指定一个名称,这里是"mysql"。

  • --privileged: 赋予容器全部的Linux Capabilities,这样容器内的进程就拥有了更高的权限。

  • --device-write-bps /dev/sda:10M: 限制指定设备(此处是/dev/sda)的写入速率为10兆字节/秒。

  • -v /usr/local/mysql: 将宿主机的/usr/local/mysql目录挂载到容器中,实现数据持久化。

  • --net mynetwork: 将容器连接到名为"mynetwork"的Docker网络。

  • --ip 172.20.0.20: 为容器分配指定的IP地址,这里是172.20.0.20。

  • -d: 以后台模式运行容器。

  • mysql:lnmp: 使用"mysql:lnmp"镜像创建容器。

验证mysql

docker exec -it mysql bash

这是一个用于在运行中的MySQL容器中执行交互式bash shell的Docker命令。以下是对该命令的解析:

  • docker exec: 在运行中的容器中执行命令。

  • -it: 同时分配一个伪终端(pseudo-TTY)并保持标准输入打开,使得用户可以与容器的Shell进行交互。

  • mysql: 这是容器的名称或ID,表示在哪个容器中执行命令。

  • bash: 要在容器中执行的命令,这里是启动bash shell。

此命令的目的是进入MySQL容器的Shell,允许用户在容器内执行各种命令,例如配置、管理数据库等。在这个Shell中,你可以执行各种MySQL相关的操作。请确保容器正在运行,并已经使用此名称("mysql")启动。

systemctl status mysqld
#查看MySQL服务状态

PHP部分

建立工作目录

mkdir /opt/php
cd /opt/php
#传入php安装包php-7.1.10.tar.bz2到/opt/php

编写 Dockerfile 脚本

vim Dockerfile

FROM centos:7
MAINTAINER this is php image <lnmp>
RUN 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
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
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
CMD /usr/local/php/sbin/php-fpm -F

这是一个Dockerfile文件,用于构建一个基于CentOS 7的PHP镜像。以下是对每个步骤的解析:

  • FROM centos:7: 使用CentOS 7作为基础镜像。

  • MAINTAINER this is php image <lnmp>: 设置镜像的维护者信息。

  • RUN 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: 安装一系列依赖包,然后创建一个不可登录的用户 "nginx"。

  • ADD php-7.1.10.tar.bz2 /usr/local/src/: 将PHP源代码解压到 /usr/local/src/ 目录下。

  • WORKDIR /usr/local/src/php-7.1.10: 设置工作目录为PHP源代码目录。

  • 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: 配置、编译和安装PHP。指定了一系列选项和模块,包括MySQL支持、zlib、curl、GD图形库等。

  • ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH: 设置环境变量,将PHP可执行文件路径添加到系统PATH中。

  • ADD php.ini /usr/local/php/lib/: 添加自定义的php.ini配置文件。

  • ADD php-fpm.conf /usr/local/php/etc/: 添加自定义的php-fpm配置文件。

  • ADD www.conf /usr/local/php/etc/php-fpm.d/: 添加自定义的php-fpm池配置文件。

  • EXPOSE 9000: 暴露PHP-FPM的监听端口。

  • CMD /usr/local/php/sbin/php-fpm -F: 设置容器启动时执行的默认命令,启动PHP-FPM服务。 -F 选项使PHP-FPM在前台运行。

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

vim php.ini

#939行,取消注释,修改
date.timezone = Asia/Shanghai
#1170行,修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
vim php-fpm.conf 

#17行,删除注释符号“;”
pid = run/php-fpm.pid
vim www.conf 

#23、24行,修改用户和组
user = nginx
group = nginx
#36行,修改监听IP和端口为容器IP:9000端口
listen = 172.20.0.30:9000
#62行,修改允许客户端的IP地址列表
listen.allowed_clients = 127.0.0.1,172.20.0.10

生成镜像

docker build -t php:lnmp .

docker images

启动镜像容器

docker run --name php --net mynetwork --ip 172.20.0.30 -p 9000:9000 --volumes-from nginx --volumes-from mysql -itd php:lnmp

docker ps

验证 php

docker exec -it php bash
ps -aux

  • docker exec -it php bash: 这个命令使用 exec 在运行的Docker容器中执行命令。 -it 选项表示交互式执行,并使用 bash 进入容器的命令行终端。

  • 一旦你进入了容器的命令行终端,然后执行 ps -aux 命令:这个命令用于显示当前正在运行的进程列表,以及它们的详细信息。

启动 wordpress 服务

mysql 授权

#进入mysql容器
docker exec -it mysql bash
#初始密码为空,直接回车
mysql -u root -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;

上述代码是在MySQL数据库中创建一个名为"wordpress"的数据库,并授予了两个用户不同的权限。

  • create database wordpress;: 创建一个名为"wordpress"的数据库。

  • grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';: 授予了一个名为"wordpress"的用户对"wordpress"数据库的所有权限,并设置了密码为'123456'。这个用户可以从任何主机('%'表示所有主机)连接到数据库。

  • grant all privileges on *.* to 'root'@'%' identified by '123456';: 授予了一个名为"root"的用户对所有数据库的所有权限,并设置了密码为'123456'。同样,这个用户可以从任何主机连接到数据库。

  • flush privileges;: 刷新权限,使更改生效。

浏览器测试访问

访问 http://192.168.41.31/wordpress/index.php

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是基于 Docker Swarm 搭建 LNMP 环境的步骤: 1. 安装 DockerDocker Swarm 2. 创建一个 Docker Swarm 集群 3. 创建一个 overlay 网络,用于容器之间的通信 ```bash docker network create --driver overlay my-network ``` 4. 创建一个 MySQL 服务 ```bash docker service create \ --name mysql \ --network my-network \ -e MYSQL_ROOT_PASSWORD=<password> \ -e MYSQL_DATABASE=<database> \ mysql:5.7 ``` 其中,`<password>` 是 MySQL 的 root 密码,`<database>` 是要创建的数据库名称。 5. 创建一个 Nginx 服务 ```bash docker service create \ --name nginx \ --network my-network \ -p 80:80 \ -p 443:443 \ -v /path/to/nginx.conf:/etc/nginx/nginx.conf \ --mount type=bind,source=/path/to/html,target=/usr/share/nginx/html \ nginx:latest ``` 其中,`/path/to/nginx.conf` 是自定义的 Nginx 配置文件路径,`/path/to/html` 是自定义的静态文件路径。 6. 创建一个 PHP-FPM 服务 ```bash docker service create \ --name php-fpm \ --network my-network \ --mount type=bind,source=/path/to/php,target=/var/www/html \ php:7-fpm ``` 其中,`/path/to/php` 是自定义的 PHP 代码路径。 7. 创建一个 Redis 服务 ```bash docker service create \ --name redis \ --network my-network \ redis:latest ``` 8. 创建一个运行 PHP 代码的服务 ```bash docker service create \ --name php \ --network my-network \ --mount type=bind,source=/path/to/php,target=/var/www/html \ --mount type=bind,source=/path/to/nginx.conf,target=/etc/nginx/nginx.conf \ --mount type=bind,source=/path/to/logs,target=/var/log/nginx \ --mount type=bind,source=/path/to/sessions,target=/var/lib/php/sessions \ --mount type=bind,source=/path/to/config,target=/usr/local/etc/php/conf.d \ php:7-fpm ``` 其中,`/path/to/logs` 是自定义的 Nginx 日志路径,`/path/to/sessions` 是自定义的 PHP 会话路径,`/path/to/config` 是自定义的 PHP 配置路径。 9. 验证 LNMP 环境是否正常工作 在浏览器中输入服务器的 IP 地址,应该能够看到 Nginx 的欢迎页面。在 PHP 代码中连接 MySQL 和 Redis 数据库,应该能够正常工作。 以上是基于 Docker Swarm 搭建 LNMP 环境的步骤,希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值