docker基于centos镜像搭建lnmp

docker基于centos镜像搭建lnmp

1.拉取centos镜像

[root@node2 ~]# docker pull centos
[AUsing default tag: latest
latest: Pulling from library/centos
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Image is up to date for centos:latest
docker.io/library/centos:latest

2.创建基于centos镜像的(nginx、mysql、php)的容器

[root@node3 ~]# docker run -d -it --name nginx 5d0da3dc9764 /bin/bash
d1c7cd62f1f998b7af2bbb74eedbe4a11937c899fe3bf00974ae9263f629d99e
[root@node3 ~]# docker run -d -it --name mysql 5d0da3dc9764 /bin/bash
7c824c7d2e75c2ece8fc0b91d6b7273b1cdefac81d3f5ecd17c0a66f636c6b80
[root@node3 ~]# docker run -d -it --name php 5d0da3dc9764 /bin/bash
9d679e39b4d6d41988918989d30435a35d1c1434b6176fd3d09509a5873823c6
[root@node3 ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
9d679e39b4d6   5d0da3dc9764   "/bin/bash"   4 seconds ago    Up 2 seconds              php
7c824c7d2e75   5d0da3dc9764   "/bin/bash"   10 seconds ago   Up 9 seconds              mysql
d1c7cd62f1f9   5d0da3dc9764   "/bin/bash"   20 seconds ago   Up 19 seconds             nginx

3.给容器里面上传相应的包

[root@node3 ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
9d679e39b4d6   5d0da3dc9764   "/bin/bash"   4 seconds ago    Up 2 seconds              php
7c824c7d2e75   5d0da3dc9764   "/bin/bash"   10 seconds ago   Up 9 seconds              mysql
d1c7cd62f1f9   5d0da3dc9764   "/bin/bash"   20 seconds ago   Up 19 seconds             nginx
[root@node3 ~]# ls
anaconda-ks.cfg   apr-util-1.6.1.tar.gz  mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz  oniguruma-6.9.4.tar.gz
apr-1.7.0.tar.gz  httpd-2.4.49.tar.gz    nginx-1.20.1.tar.gz                         php-7.4.24.tar.gz
[root@node3 ~]# docker cp /root/nginx-1.20.1.tar.gz d1c7cd62f1f9:/usr/src
[root@node3 ~]# docker cp /root/mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz 7c824c7d2e75:/usr/src
[root@node3 ~]# docker cp /root/php-7.4.24.tar.gz  9d679e39b4d6:/usr/src
[root@node3 ~]# 

4.编译安装nginx

[root@node3 ~]# docker exec -it d1c7cd62f1f9 /bin/bash
[root@d1c7cd62f1f9 /]# cd /usr/src
[root@d1c7cd62f1f9 src]# ls
debug  kernels  nginx-1.20.1.tar.gz
[root@d1c7cd62f1f9 src]# 
4.1.创建用户
[root@d1c7cd62f1f9 src]# useradd -r -M -s /sbin/nologin nginx
[root@d1c7cd62f1f9 src]# 
4.2.安装依赖包
[root@d1c7cd62f1f9 src]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++  wget  make ncurses-compat-libs
[root@d1c7cd62f1f9 src]# yum -y groups mark install 'Development Tools'
4.3.创建日志存放目录
[root@d1c7cd62f1f9 src]# mkdir -p /var/log/nginx
[root@d1c7cd62f1f9 src]# chown -R nginx.nginx /var/log/nginx
[root@d1c7cd62f1f9 src]# 
4.4.解压编译安装
[root@d1c7cd62f1f9 src]# tar xf nginx-1.20.1.tar.gz 
[root@d1c7cd62f1f9 src]# ls
debug  kernels  nginx-1.20.1  nginx-1.20.1.tar.gz
[root@d1c7cd62f1f9 src]# cd nginx-1.20.1
[root@d1c7cd62f1f9 nginx-1.20.1]# ./configure \
>  --prefix=/usr/local/nginx \
>  --user=nginx \
>  --group=nginx \
>  --with-debug \
>  --with-http_ssl_module \
>  --with-http_realip_module \
>  --with-http_image_filter_module \
>  --with-http_gunzip_module \
>  --with-http_gzip_static_module \
>  --with-http_stub_status_module \
>  --http-log-path=/var/log/nginx/access.log \
>  --error-log-path=/var/log/nginx/error.log
[root@d1c7cd62f1f9 nginx-1.20.1]# make && make install
4.5.配置环境变量
[root@d1c7cd62f1f9 nginx-1.20.1]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
[root@d1c7cd62f1f9 nginx-1.20.1]# . /etc/profile.d/nginx.sh
[root@d1c7cd62f1f9 nginx-1.20.1]# 
4.6.启动nginx
[root@d1c7cd62f1f9 local]# nginx
[root@d1c7cd62f1f9 local]# ss -antl
State      Recv-Q      Send-Q           Local Address:Port           Peer Address:Port     Process     
LISTEN     0           128                    0.0.0.0:80                  0.0.0.0:*                    
[root@d1c7cd62f1f9 local]# 
4.7.编写shell启动脚本
[root@d1c7cd62f1f9 ~]# cat /start.sh
#!/bin/sh

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/bin/bash
[root@d1c7cd62f1f9 ~]# 
4.8.修改配置文件
[root@d1c7cd62f1f9 ~]# vim /usr/local/nginx/conf/nginx.conf
 
        location ~ \.php$ {         //取消掉这里所有得注释
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;   //这里改成 $document_root
            include        fastcgi_params;
        }
        
        
                location / {
            root   html;
            index  index.php index.html index.htm;    //这里加上index.php
        }

[root@d1c7cd62f1f9 ~]# nginx -s stop
[root@d1c7cd62f1f9 ~]# nginx 
[root@d1c7cd62f1f9 ~]# ss -antl
State      Recv-Q      Send-Q           Local Address:Port           Peer Address:Port     Process     
LISTEN     0           128                    0.0.0.0:80                  0.0.0.0:*                    
[root@d1c7cd62f1f9 ~]# 
4.9.index.php
[root@d1c7cd62f1f9 ~]# echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
[root@d1c7cd62f1f9 ~]# 

5.mysql安装

[root@node3 ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
9d679e39b4d6   5d0da3dc9764   "/bin/bash"   17 minutes ago   Up 17 minutes             php
7c824c7d2e75   5d0da3dc9764   "/bin/bash"   17 minutes ago   Up 17 minutes             mysql
d1c7cd62f1f9   5d0da3dc9764   "/bin/bash"   17 minutes ago   Up 17 minutes             nginx
[root@node3 ~]# docker exec -it 7c824c7d2e75 /bin/bash
[root@7c824c7d2e75 /]# cd /usr/src
[root@7c824c7d2e75 src]# ls
debug  kernels  mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
[root@7c824c7d2e75 src]# 
5.1.安装mysql依赖包
[root@7c824c7d2e75 src]# yum -y install ncurses-devel openssl-devel openssl cmake mariadb-devel  libaio.x86_64  numactl
5.2.创建用户
[root@7c824c7d2e75 src]# useradd -r -M -s /sbin/nologin mysql
[root@7c824c7d2e75 src]# 
5.3.解压并重命名
[root@7c824c7d2e75 src]# tar xf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz -C /usr/local
[root@7c824c7d2e75 src]# cd /usr/local
[root@7c824c7d2e75 local]# mv mysql-5.7.34-linux-glibc2.12-x86_64/ mysql
[root@7c824c7d2e75 local]# 
5.4.修改mysql的属主属组并添加环境变量
[root@7c824c7d2e75 local]# chown -R mysql.mysql mysql
[root@7c824c7d2e75 local]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@7c824c7d2e75 local]# source /etc/profile.d/mysql.sh
[root@7c824c7d2e75 local]# 
[root@7c824c7d2e75 local]# ln -s /usr/local/mysql/include/ /usr/include/mysql/
[root@7c824c7d2e75 local]# 
5.5.写配置文件
[root@7c824c7d2e75 ~]# vim /etc/ld.so.conf.d/mysql.conf
[root@7c824c7d2e75 ~]# cat /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib
[root@7c824c7d2e75 ~]# ldconfig
[root@7c824c7d2e75 ~]# 
5.6.创建数据存放目录
[root@7c824c7d2e75 ~]# mkdir /opt/data
[root@7c824c7d2e75 ~]# chown -R mysql.mysql /opt/data
[root@7c824c7d2e75 ~]# 
5.7.初始化
[root@7c824c7d2e75 ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/data/
2021-12-03T10:05:32.092282Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-12-03T10:05:32.291058Z 0 [Warning] InnoDB: New log files created, LSN=45790
2021-12-03T10:05:32.320487Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2021-12-03T10:05:32.376987Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 8d0d03c4-5420-11ec-928b-0242ac110003.
2021-12-03T10:05:32.377978Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2021-12-03T10:05:32.924868Z 0 [Warning] CA certificate ca.pem is self signed.
2021-12-03T10:05:33.095400Z 1 [Note] A temporary password is generated for root@localhost: 5qgssdb1;k&Z
[root@7c824c7d2e75 ~]# 
5.8.生成配置文件
[root@7c824c7d2e75 ~]# vim /etc/my.cnf
[root@7c824c7d2e75 ~]# cat /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve

[root@7c824c7d2e75 ~]# 
5.9.配置启动文件
[root@7c824c7d2e75 ~]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@7c824c7d2e75 ~]# sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /etc/init.d/mysqld
[root@7c824c7d2e75 ~]# sed -ri 's#^(datadir=).*#\1/opt/data#g' /etc/init.d/mysqld
[root@7c824c7d2e75 ~]# 
5.10.编写启动脚本
[root@7c824c7d2e75 ~]# cat /start.sh 
#!/bin/sh

/etc/init.d/mysqld start
/bin/bash
[root@7c824c7d2e75 ~]# 
[root@7c824c7d2e75 ~]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/opt/data/7c824c7d2e75.err'.
 SUCCESS! 
[root@7c824c7d2e75 ~]# ss -antl
State      Recv-Q      Send-Q           Local Address:Port           Peer Address:Port     Process     
LISTEN     0           80                           *:3306                      *:*                    
[root@7c824c7d2e75 ~]# 

6.php安装

6.1.查看包
[root@node3 ~]# docker exec -it 9d679e39b4d6 /bin/bash
[root@9d679e39b4d6 local]# cd /usr/src
[root@9d679e39b4d6 src]# ls
debug  kernels  php-7.4.24.tar.gz
[root@9d679e39b4d6 src]# 
6.2.安装依赖包
[root@9d679e39b4d6 src]# yum -y install epel-release
[root@9d679e39b4d6 src]# yum -y install sqlite-devel libzip-devel libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl  libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel oniguruma  gcc gcc-c++ make libcurl-devel
[root@9d679e39b4d6 src]# yum -y install http://mirror.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm
[root@9d679e39b4d6 src]# yum -y install libzip-devel.x86_64
[root@9d679e39b4d6 src]# yum -y install libsqlite3x-devel.x86_64
6.3.解压
[root@9d679e39b4d6 src]# tar xf php-7.4.24.tar.gz -C /usr/local
[root@9d679e39b4d6 src]# cd /usr/local/php-7.4.24/
[root@9d679e39b4d6 php-7.4.24]# 
6.4.编译
[root@9d679e39b4d6 php-7.4.24]# ./configure --prefix=/usr/local/php7   --with-config-file-path=/etc  --enable-fpm  --disable-debug  --disable-rpath  --enable-shared  --enable-soap  --with-openssl  --enable-bcmath  --with-iconv  --with-bz2  --enable-calendar  --with-curl  --enable-exif   --enable-ftp  --enable-gd  --with-jpeg  --with-zlib-dir  --with-freetype  --with-gettext  --enable-mbstring  --enable-pdo  --with-mysqli=mysqlnd  --with-pdo-mysql=mysqlnd  --with-readline  --enable-shmop  --enable-simplexml  --enable-sockets  --with-zip  --enable-mysqlnd-compression-support  --with-pear  --enable-pcntl  --enable-posix 
[root@9d679e39b4d6 php-7.4.24]# make && make install
6.5.设置环境变量
[root@9d679e39b4d6 php-7.4.24]# echo 'export PATH=/usr/local/php8/bin:$PATH' > /etc/profile.d/php.sh
[root@9d679e39b4d6 php-7.4.24]# source /etc/profile.d/php.sh
[root@9d679e39b4d6 php-7.4.24]#
6.7.启动
[root@9d679e39b4d6 /]# /usr/local/php7/sbin/php-fpm 
[root@9d679e39b4d6 /]# ss -antl 
State    Recv-Q   Send-Q     Local Address:Port            Peer Address:Port        Process         
LISTEN   0        128            127.0.0.1:9000                 0.0.0.0:*  [root@9d679e39b4d6 ~]# cat /start.sh 
#!/bin/sh

/usr/local/php7/sbin/php-fpm
/bin/bash
[root@9d679e39b4d6 ~]# 
6.8.构建镜像
[root@syndic ~]# docker ps -a 
CONTAINER ID   IMAGE                   COMMAND                 CREATED          STATUS                        PORTS                               NAMES
f7f604cebf74   43be0e44cf87            "/bin/bash start.sh"    9 minutes ago    Up 9 minutes                                                      mysql
f3ef9b30991d   f13fba8e80ef            "/bin/bash /start.sh"   10 minutes ago   Up 10 minutes                                                     php
76272b72c9a9   3b6aa0358efe            "/bin/bash start.sh"    11 minutes ago   Up 11 minutes
                                     nginx
[root@syndic ~]# docker commit -p -c 'CMD ["/bin/bash","start.sh"]' 76272b72c9a9  3199560936/nginx:v0.1
[root@syndic ~]# docker commit -p -c 'CMD ["/bin/bash","start.sh"]' f3ef9b30991d  3199560936/php:v0.3
[root@syndic ~]# docker commit -p -c 'CMD ["/bin/bash","start.sh"]' f7f604cebf74  3199560936/mysql:v0.1
[root@syndic ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED             SIZE
3199560936/php     v0.3      f13fba8e80ef   About an hour ago   1.46GB
3199560936/mysql   v0.1      43be0e44cf87   2 hours ago         3.81GB
3199560936/nginx   v0.1      3b6aa0358efe   2 hours ago         553MB
centos             latest    5d0da3dc9764   2 months ago        231MB
[root@syndic ~]# 
7.映射nginx端口

//映射端口记得把所有容器停掉

[root@syndic ~]# docker run -itd --name nginx -p 80:80 3b6aa0358efe  //nginx镜像ID
76272b72c9a9eb6308985ff4b97f25837f1033670742ebe2561ad3bd0757110f
[root@syndic ~]# ss -antl
State        Recv-Q       Send-Q             Local Address:Port             Peer Address:Port       Process       
LISTEN       0            128                      0.0.0.0:80                    0.0.0.0:*                        
LISTEN       0            128                      0.0.0.0:22                    0.0.0.0:*                        
LISTEN       0            128                         [::]:80                       [::]:*                        
LISTEN       0            128                         [::]:22                       [::]:*                        
[root@syndic ~]# 
[root@syndic ~]# docker ps -a        
CONTAINER ID   IMAGE                   COMMAND                 CREATED          STATUS                        PORTS                               NAMES
f7f604cebf74   43be0e44cf87            "/bin/bash start.sh"    9 minutes ago    Up 9 minutes                                                      mysql
f3ef9b30991d   f13fba8e80ef            "/bin/bash /start.sh"   10 minutes ago   Up 10 minutes                                                     php
76272b72c9a9   3b6aa0358efe            "/bin/bash start.sh"    11 minutes ago   Up 11 minutes                 0.0.0.0:80->80/tcp, :::80->80/tcp   nginx

[root@syndic ~]# 
[root@syndic ~]# docker exec -it 76272b72c9a9 /bin/bash  //映射端口后进入nginx中
[root@1b71cc60cd47 /]# 
[root@1b71cc60cd47 /]# vi /usr/local/nginx/conf/nginx.conf
。。。
        location / {
            root   html;
            index  index.html index.php index.htm;    //添加index.php 
        }
。。。
        location ~ \.php$ {
            root           /var/www/html;   //添加路径
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;   //更改为$document_root
            include        fastcgi_params;
        }
。。。
[root@1b71cc60cd47 /]# nginx -s reload
8.配置container
[root@syndic ~]# docker run -it --name php  --network container:nginx f13fba8e80ef  //php镜像ID
[root@76272b72c9a9 /]# ss -antl
State        Recv-Q       Send-Q             Local Address:Port             Peer Address:Port       Process       
LISTEN       0            128                    127.0.0.1:9000                  0.0.0.0:*                        
LISTEN       0            128                      0.0.0.0:80                    0.0.0.0:*                        
[root@76272b72c9a9 /]# 
[root@1b71cc60cd47 /]# mkdir -p /var/www/html
[root@1b71cc60cd47 /]# cd /var/www/html/
[root@1b71cc60cd47 html]# vi index.php     //注意这里实在php容器里面得操作
[root@1b71cc60cd47 html]# cat index.php 
<?php
  phpinfo();
?>
[root@1b71cc60cd47 html]# 
[root@syndic ~]# docker run -it --name mysql  --network container:nginx 43be0e44cf87   //mysql镜像ID
Starting MySQL SUCCESS! 
[root@76272b72c9a9 /]# Logging to '/opt/data/76272b72c9a9.err'.
[root@76272b72c9a9 /]# ss -antl
State        Recv-Q       Send-Q             Local Address:Port             Peer Address:Port       Process       
LISTEN       0            128                    127.0.0.1:9000                  0.0.0.0:*                        
LISTEN       0            128                      0.0.0.0:80                    0.0.0.0:*                        
LISTEN       0            80                             *:3306                        *:*                        
[root@76272b72c9a9 /]# 

9.访问测试

请添加图片描述
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lfei5120

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值