当前位置:   article > 正文

【云原生】通过docker构建基于LNMP的WordPress项目

【云原生】通过docker构建基于LNMP的WordPress项目

目录

前言:

一:先创建nginx的镜像

步骤一:准备好nginx的安装包

步骤二:准备nginx的网页目录和wordpress网站目录以及nginx.conf文件

步骤三:编写构建nginx应用镜像的Dockerfile文件

步骤四:基于Dockerfile构建nginx:centos镜像

二:创建mysql镜像

步骤一:准备好mysql的安装包

步骤二:准备好mysql的配置文件my.cnf

步骤三:编写构建mysql应用镜像的Dockerfile文件

步骤四:基于Dockerfile构建mysql:centos镜像

三:创建php镜像

步骤一:准备好php的安装包

步骤二:准备好php的三个配置文件

步骤三:编写构建php应用镜像的Dockerfile文件

步骤四:基于Dockerfile构建php:centos镜像

四:完成对接


前言:

计划通过自定义网络模式,创建一个172.18.0.0/16网段

nginx:172.18.0.2:80

php:172.18.0.3:9000

mysql:172.18.0.4:3306

一:先创建nginx的镜像

步骤一:准备好nginx的安装包

步骤二:准备nginx的网页目录和wordpress网站目录以及nginx.conf文件

 

 

步骤三:编写构建nginx应用镜像的Dockerfile文件

  1. FROM centos:7
  2. #基于centos7镜像
  3. MAINTAINER nginx on centos7 by lxy-20240125
  4. #注释信息
  5. ADD nginx-1.24.0.tar.gz /opt/
  6. #将nginx安装包传输到镜像中
  7. RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make && \
  8. useradd -M -s /sbin/nologin nginx && \
  9. cd /opt/nginx-1.24.0 && \
  10. ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && \
  11. make && make install
  12. #下载编译安装nginx的依赖环境,以及创建nginx用户,进入nginx目录中,完成配置--编译--安装
  13. ENV PATH=$PATH:/usr/local/nginx/sbin/
  14. #创建镜像的环境变量
  15. ADD nginx.conf /usr/local/nginx/conf/nginx.conf
  16. #将配置文件传输的镜像中,覆盖原有的nginx.conf文件
  17. RUN chmod 777 -R /usr/local/nginx/html/
  18. #修改权限
  19. EXPOSE 80
  20. #暴雷80端口
  21. CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
  22. #设置启动命令

步骤四:基于Dockerfile构建nginx:centos镜像

二:创建mysql镜像

步骤一:准备好mysql的安装包

步骤二:准备好mysql的配置文件my.cnf

  1. [root@localhost mysql]#cat my.cnf
  2. [client]
  3. port = 3306
  4. socket = /usr/local/mysql/mysql.sock
  5. [mysql]
  6. port = 3306
  7. socket = /usr/local/mysql/mysql.sock
  8. [mysqld]
  9. user = mysql
  10. basedir = /usr/local/mysql
  11. datadir = /usr/local/mysql/data
  12. port = 3306
  13. character_set_server=utf8
  14. pid-file = /usr/local/mysql/mysqld.pid
  15. socket = /usr/local/mysql/mysql.sock
  16. server-id = 1
  17. 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应用镜像的Dockerfile文件

  1. FROM centos:7
  2. #基于centos7镜像
  3. MAINTAINER this is mysql image <lxy>
  4. #注释信息
  5. ADD mysql-boost-5.7.44.tar.gz /opt/
  6. COPY my.cnf /etc/my.cnf
  7. #将安装包和配置文件传输到镜像中
  8. RUN yum -y install make gcc gcc-c++ ncurses ncurses-devel bison cmake openssl-devel && \
  9. yum clean all && \
  10. cd /opt/mysql-5.7.44/ && \
  11. cmake \
  12. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  13. -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
  14. -DSYSCONFDIR=/etc \
  15. -DSYSTEMD_PID_DIR=/usr/local/mysql \
  16. -DDEFAULT_CHARSET=utf8 \
  17. -DDEFAULT_COLLATION=utf8_general_ci \
  18. -DWITH_EXTRA_CHARSETS=all \
  19. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  20. -DMYSQL_DATADIR=/usr/local/mysql/data \
  21. -DWITH_BOOST=boost \
  22. -DWITH_SYSTEMD=1 && make -j 2 && make install && \
  23. useradd -M -s /sbin/nologin mysql && \
  24. chown mysql:mysql /etc/my.cnf && \
  25. chown -R mysql:mysql /usr/local/mysql/ &&\
  26. /usr/local/mysql/bin/mysqld \
  27. --initialize-insecure \
  28. --user=mysql \
  29. --basedir=/usr/local/mysql \
  30. --datadir=/usr/local/mysql/data
  31. #依次安装依赖环境,注意新版本必须要openssl环境,注意提示报错查看
  32. #清理yum缓存
  33. #进入mysql解压包中,完成cmake--编译--安装
  34. #创建一个mysql用户
  35. #修改配置文件的权限
  36. #修改安装目录的权限
  37. #直接用命令启动mysql
  38. ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
  39. #配置环境变量
  40. EXPOSE 3306
  41. #暴露端口
  42. CMD ["/usr/local/mysql/bin/mysqld"]
  43. #设置默认启动命令

步骤四:基于Dockerfile构建mysql:centos镜像

  1. docker build -t mysql:centos .
  2. ##在/docker/mysql/目录中使用该命令

三:创建php镜像

步骤一:准备好php的安装包

步骤二:准备好php的三个配置文件

  1. [root@localhost php]#ls
  2. Dockerfile php-7.1.10.tar.bz2 php-fpm.conf php.ini www.conf
  3. [root@localhost php]#vim php.ini
  4. 939 date.timezone = Asia/Shanghai ##修改时区
  5. 1170 mysqli.default_socket = /usr/local/mysql/mysql.sock
  6. [root@localhost php]#vim php-fpm.conf
  7. 17 pid = run/php-fpm.pid
  8. [root@localhost php]#vim www.conf
  9. 23 user=nginx
  10. 24 group=nginx
  11. 36 listen=172.18.0.3:9000
  12. 62 listen.allowed_clients = 172.18.0.2

 

 

 

步骤三:编写构建php应用镜像的Dockerfile文件

  1. FROM centos:7
  2. #基础镜像为centos7
  3. MAINTAINER this is php image <lxy:20240125>
  4. #注释信息
  5. ADD php-7.1.10.tar.bz2 /opt/
  6. #将文件传输到镜像中
  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-develgcc gcc-c++ make pcre-devel && \
  8. yum clean all && \
  9. cd /opt/php-7.1.10 && \
  10. ./configure \
  11. --prefix=/usr/local/php \
  12. --with-mysql-sock=/usr/local/mysql/mysql.sock \
  13. --with-mysqli \
  14. --with-zlib \
  15. --with-curl \
  16. --with-gd \
  17. --with-jpeg-dir \
  18. --with-png-dir \
  19. --with-freetype-dir \
  20. --with-openssl \
  21. --enable-fpm \
  22. --enable-mbstring \
  23. --enable-xml \
  24. --enable-session \
  25. --enable-ftp \
  26. --enable-pdo \
  27. --enable-tokenizer \
  28. --enable-zip && make -j 2&& make install && \
  29. useradd -M -s /sbin/nologin nginx
  30. #通过RUN依次下载php的依赖环境,清理yum缓存
  31. #进入文件,配置--编译--安装
  32. #创建nginx用户
  33. COPY php.ini /usr/local/php/lib/php.ini
  34. COPY php-fpm.conf /usr/local/php/etc/php-fpm.conf
  35. COPY www.conf /usr/local/php/etc/php-fpm.d/www.conf
  36. #将三个配置文件传输到镜像中
  37. EXPOSE 9000
  38. #暴露9000端口
  39. CMD [ "/usr/local/php/sbin/php-fpm", "-F" ]
  40. #启动

步骤四:基于Dockerfile构建php:centos镜像

[root@localhost php]#docker build -t php:centos .

 

四:完成对接

  1. ##创建一个自定义网络,网段为172.18.0.0/16,名称为mynetwork
  2. [root@localhost nginx]#docker network create --subnet 172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork
  3. 8a17084b63b494ed4820087a0e984d0bd74d7d7d1510f09854a36949fd90a127
  4. ##创建nginx容器,-v 将宿主机准备的网页目录挂载到容器中,并做好端口映射到宿主机的80端口,设置网络模式为自定义的mynetwork,并指定ip为172.18.0.2
  5. [root@localhost nginx]#docker run -d --name nginx -v /docker/nginx/html/:/usr/local/nginx/html -p 80:80 --network mynetwork --ip 172.18.0.2 nginx:centos
  6. 3745efed074341d66197959c23eda52d7d38de29ce647658a3b49bf1cc853804
  7. ##创建mysql容器,-v 创建数据卷,设置网络模式为自定义的mynetwork,并指定ip为172.18.0.4
  8. [root@localhost nginx]#docker run -d --name mysql --privileged -v /usr/local/mysql --network mynetwork --ip 172.18.0.4 mysql:centos
  9. f828251ec4adefe1705ab9fbb9c8b4fb73c857fd4bca462f6a6cde37ab3bac0d
  10. ##登录进入mysql容器中,完成初始化
  11. [root@localhost nginx]#docker exec -it mysql bash
  12. [root@f828251ec4ad /]# mysqladmin -uroot -p password "abc123"
  13. ##登录mysql
  14. [root@f828251ec4ad /]# mysql -uroot -pabc123
  15. ##创建WordPress库
  16. mysql> create database wordpress;
  17. Query OK, 1 row affected (0.00 sec)
  18. ##做授权
  19. mysql> grant all on *.* to 'wordpress'@'172.18.0.%' identified by 'wordpress';
  20. Query OK, 0 rows affected, 1 warning (0.00 sec)
  21. ##刷新权限
  22. mysql> flush privileges;
  23. ##创建php容器,--volumes-from 将mysql和nginx的数据卷都挂载到php容器中,并做好端口映射到宿主机的9000端口,设置网络模式为自定义的mynetwork,并指定ip为172.18.0.3
  24. [root@localhost nginx]#docker run --name php -d -p 9000:9000 --volumes-from mysql --volumes-from nginx --net mynetwork --ip 172.18.0.3 php:centos

 登录验证

总结:

排错思路:

1、在通过Dockerfile构建镜像的时候,如果报错,会有提示,细心看错误提示,完成修改。比如mysql镜像构建的时候,提示了缺少依赖环境,还提示我的Dockerfile命令有错误,还提示了我php镜像构建的时候RUN中有一条空行

 2、如果构建好了镜像但是起不来,可以通过docker logs 容器名 去看日志,也是一个排错思路

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号