详细记录docker部署lnmp

docker容器化部署lnmp
一、安装docker

#1、更新
yum update
#2、docker默认安装版本为1.13.1,这里安装docker-ce版,即使社区版
# step 1: 安装必要的一些系统工具
[root@localhost ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加docker-ce源
[root@localhost ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新,安装最新版docker-ce
[root@localhost ~]# sudo yum makecache fast
[root@localhost ~]# yum install docker-ce
# Step 4: 启动docker 服务,确认docker版本
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           20.10.14
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        a224086
 Built:             Thu Mar 24 01:49:57 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.14
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       87a90dc
  Built:            Thu Mar 24 01:48:24 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.5.11
  GitCommit:        3df54a852345ae127d1fa3092b95168e4a88e2f8
 runc:
  Version:          1.0.3
  GitCommit:        v1.0.3-0-gf46b6ba
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
[root@localhost ~]# 

二 LNMP环境部署
1、安装nginx
1.1 拉取nginx镜像,这里pull版本1.18.0

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

[root@localhost ~]# docker pull nginx:1.18.0
1.18.0: Pulling from library/nginx
f7ec5a41d630: Pull complete 
0b20d28b5eb3: Pull complete 
1576642c9776: Pull complete 
c12a848bad84: Pull complete 
03f221d9cf00: Pull complete 
Digest: sha256:e90ac5331fe095cea01b121a3627174b2e33e06e83720e9a934c7b8ccc9c55a0
Status: Downloaded newer image for nginx:1.18.0
docker.io/library/nginx:1.18.0

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        1.18.0    c2c45d506085   12 months ago   133MB
[root@localhost ~]#

2、创建数据目录

[root@localhost ~]# mkdir -pv /lnmp/nginx/{conf/conf.d,data,logs}
mkdir: created directory ‘/lnmp’
mkdir: created directory ‘/lnmp/nginx’
mkdir: created directory ‘/lnmp/nginx/conf’
mkdir: created directory ‘/lnmp/nginx/conf/conf.d’
mkdir: created directory ‘/lnmp/nginx/data’
mkdir: created directory ‘/lnmp/nginx/logs’

[root@localhost ~]# ls /lnmp/nginx/
conf  data  logs
[root@localhost ~]# 

3、生成配置文件

#先启动一个nginx容器,检查里面的nginx配置
[root@localhost ~]# docker run -it -d --privileged --name nginx -p 80:80 nginx:1.18.0
[root@localhost ~]# docker exec -it $(docker ps -aq) /bin/bash
root@081a2f663295:/# cat  /etc/nginx/nginx.conf    

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}
root@081a2f663295:/# cat /etc/nginx/conf.d/default.conf 
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

root@081a2f663295:/# exit
exit
[root@localhost ~]# 

制作配置文件,把上面容器中的配置文件制作到宿主机

[root@localhost ~]# vim /lnmp/nginx/conf/nginx.conf
[root@localhost ~]# vim /lnmp/nginx/conf/conf.d/default.conf

4、启动nginx容器

[root@localhost ~]# docker run --privileged  -it -d --name nginx -p 80:80 -v /lnmp/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /lnmp/nginx/conf/conf.d:/etc/nginx/conf.d -v /lnmp/nginx/html:/usr/share/nginx/html -v /lnmp/nginx/logs:/var/log/nginx nginx:1.18.0

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                               NAMES
d4c36a62dde4   nginx:1.18.0   "/docker-entrypoint.…"   6 minutes ago   Up 4 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx
[root@localhost ~]# 

5、确认nginx是否正确安装成功,浏览器器输入宿主机IP,可以打开nginx欢迎页面。
在这里插入图片描述
6、编辑主页并测试

[root@localhost ~]# ls /lnmp/nginx/html/
[root@localhost ~]# echo "Hello World,This is a test pages" > /lnmp/nginx/html/index.html
[root@localhost ~]# ls /lnmp/nginx/html/
index.html
[root@localhost ~]# 

在这里插入图片描述至此,docker成功安装nginx。

三、安装mysql
与nginx一样,pull镜像,创建数据目录,启动容器

#拉取Mysql镜像,这里使用5.7版本
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        1.18.0    c2c45d506085   12 months ago   133MB
[root@localhost ~]# docker pull  mysql:5.7.32           
5.7.32: Pulling from library/mysql
a076a628af6f: Pull complete 
f6c208f3f991: Pull complete 
88a9455a9165: Pull complete 
406c9b8427c6: Pull complete 
7c88599c0b25: Pull complete 
25b5c6debdaf: Pull complete 
43a5816f1617: Pull complete 
7065aaa2655f: Pull complete 
b4bc531db40f: Pull complete 
8c3e9d7c9815: Pull complete 
fadfb9734ed2: Pull complete 
Digest: sha256:e08834258fcc0efd01df358222333919df53d4a0d9b2a54da05b204b822e3b7b
Status: Downloaded newer image for mysql:5.7.32
docker.io/library/mysql:5.7.32
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        1.18.0    c2c45d506085   12 months ago   133MB
mysql        5.7.32    cc8775c0fe94   15 months ago   449MB
[root@localhost ~]# 

#创建数据目录
[root@localhost ~]# mkdir -pv /lnmp/mysql/{conf,data,logs}
mkdir: 已创建目录 "/lnmp/mysql"
mkdir: 已创建目录 "/lnmp/mysql/conf"
mkdir: 已创建目录 "/lnmp/mysql/data"
mkdir: 已创建目录 "/lnmp/mysql/logs"
[root@localhost ~]# ls /lnmp/mysql/
conf  data  logs
[root@localhost ~]# 

#启动mysql容器
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                               NAMES
d4c36a62dde4   nginx:1.18.0   "/docker-entrypoint.…"   18 minutes ago   Up 12 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx
[root@localhost ~]# docker run -d -p 3306:3306 --name mysql \
> -v /lnmp/mysql/conf:/etc/mysql/conf.d \
> -v /lnmp/mysql/logs:/logs \
> -v /lnmp/mysql/data:/var/lib/mysql \
> -e MYSQL_ROOT_PASSWORD=root \
> mysql:5.7.32
55cc5694695d26327abee0580af2cbcaf28c49f33da8da24aa50c5b049946e01
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
55cc5694695d   mysql:5.7.32   "docker-entrypoint.s…"   5 seconds ago    Up 3 seconds    0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
d4c36a62dde4   nginx:1.18.0   "/docker-entrypoint.…"   18 minutes ago   Up 12 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp                      nginx
[root@localhost ~]# 

到这里,docker安装mysql已完成。

四、安装PHP
方法同上,pull镜像,创建数据目录,生成配置文件,启动php容器
1、pull镜像前,先更新下镜像加速

[root@localhost ~]# vim /etc/docker/daemon.json
{
 "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/","https://hub-mirror.c.163.com","https://registry.docker-cn.com"]
}

2、下载PHP镜像

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        1.18.0    c2c45d506085   12 months ago   133MB
mysql        5.7.32    cc8775c0fe94   15 months ago   449MB
[root@localhost ~]# docker pull php:5.6-fpm
5.6-fpm: Pulling from library/php
5e6ec7f28fb7: Pull complete 
cf165947b5b7: Pull complete 
7bd37682846d: Pull complete 
99daf8e838e1: Pull complete 
f8628c9f032f: Pull complete 
50ff925cdfa2: Pull complete 
6ab76f312877: Pull complete 
28ea94b4dd82: Pull complete 
a6dbb35d45d2: Pull complete 
98b901ec9e8d: Pull complete 
Digest: sha256:4f070f1b7b93cc5ab364839b79a5b26f38d5f89461f7bc0cd4bab4a3ad7d67d7
Status: Downloaded newer image for php:5.6-fpm
docker.io/library/php:5.6-fpm
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        1.18.0    c2c45d506085   12 months ago   133MB
mysql        5.7.32    cc8775c0fe94   15 months ago   449MB
php          5.6-fpm   3458979c7744   3 years ago     344MB
[root@localhost ~]# 

3、创建数据目录:

[root@localhost ~]# mkdir -pv /lnmp/php-fpm/
mkdir: 已创建目录 "/lnmp/php-fpm/"
[root@localhost ~]# 

4、制作配置文件,同nginx一样,启动php容器,登录,把镜像中的PHP配置文件拿出来到宿主机
这部分略。

[root@localhost ~]# ls /lnmp/php-fpm/
[root@localhost ~]# 
vim /lnmp/php-fpm/www.conf

"/lnmp/php-fpm/www.conf" [New] 543L, 23032C written
[root@localhost ~]# ll /lnmp/php-fpm/
总用量 24
-rw-r--r--. 1 root root 23032 412 16:03 www.conf
[root@localhost ~]# 

5、启动PHP容器

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
55cc5694695d   mysql:5.7.32   "docker-entrypoint.s…"   37 minutes ago   Up 37 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
d4c36a62dde4   nginx:1.18.0   "/docker-entrypoint.…"   56 minutes ago   Up 50 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp                      nginx
[root@localhost ~]# docker run -d --name php-fpm \
> -p 9000:9000 \
> -v /lnmp/php-fpm/www.conf:/data/php-fpm/etc/php-fpm.d/www.conf \
> -v /lnmp/nginx/html:/var/www/html \
> php:5.6-fpm
861af3bccae4c7096bab66c04c1574273495fefffd9177dd27b0fe36bdf0d1c1
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
861af3bccae4   php:5.6-fpm    "docker-php-entrypoi…"   5 seconds ago    Up 4 seconds    0.0.0.0:9000->9000/tcp, :::9000->9000/tcp              php-fpm
55cc5694695d   mysql:5.7.32   "docker-entrypoint.s…"   37 minutes ago   Up 37 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
d4c36a62dde4   nginx:1.18.0   "/docker-entrypoint.…"   56 minutes ago   Up 50 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp                      nginx
[root@localhost ~]# 

6、配置nginx,使之支持PHP

[root@localhost ~]# vim /lnmp/nginx/conf/conf.d/default.conf 


location / {
        root   /usr/share/nginx/html;
        index index.php  index.html index.htm;
    }
location ~ \.php$ {
        root           html;
        fastcgi_pass   192.168.139.132:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
        include        fastcgi_params;
    }

6、测试PHP是否正确安装

#重启nginx
[root@localhost ~]# docker restart nginx
nginx
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS          PORTS                                                  NAMES
861af3bccae4   php:5.6-fpm    "docker-php-entrypoi…"   7 minutes ago       Up 7 minutes    0.0.0.0:9000->9000/tcp, :::9000->9000/tcp              php-fpm
55cc5694695d   mysql:5.7.32   "docker-entrypoint.s…"   45 minutes ago      Up 45 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
d4c36a62dde4   nginx:1.18.0   "/docker-entrypoint.…"   About an hour ago   Up 3 seconds    0.0.0.0:80->80/tcp, :::80->80/tcp                      nginx
[root@localhost ~]# 

配置PHP测试页

[root@localhost ~]# echo "<?php phpinfo() ?>" > /lnmp/nginx/html/index.php  
[root@localhost ~]# ls /lnmp/nginx/html/
index.html  index.php
[root@localhost ~]# cat /lnmp/nginx/html/index.php 
<?php phpinfo(); ?>
[root@localhost ~]# 

测试,如下能打开PHP信息页表示PHP安装完成。
在这里插入图片描述
至此,docker 部署LNMP完成,

要发布网页,只需要把网页代码放到发布目录即可,比如发布一个wordpress
在这里插入图片描述

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用Docker部署LNMP架构(Linux+Nginx+MySQL+PHP),首先需要安装DockerDocker Compose。你可以按照以下步骤进行部署: 1. 安装DockerDocker Compose: 首先,按照引用中的指引,配置Docker的yum源,并安装DockerDocker Compose。安装完成后,启动Docker服务。 2. 准备部署文件: 下载引用中的docker-lnmp项目,将docker-compose-linux-x86_64-v2.5.0文件移动到/usr/local/bin目录下,并赋予执行权限。 3. 编辑docker-compose.yml文件: 进入docker-lnmp项目文件夹,在该目录下找到docker-compose.yml文件,并使用任意文本编辑器进行编辑。根据你的需求,可以对镜像版本、端口映射、环境变量等进行配置。 4. 运行Docker Compose: 在docker-lnmp项目文件夹中打开终端,并执行以下命令: ``` docker-compose up -d ``` 这将启动LNMP架构的Docker容器,并在后台运行。 5. 验证部署: 使用浏览器访问本地主机的Nginx服务,默认端口为80。如果一切正常,你应该能够看到Nginx的欢迎页面。 通过以上步骤,你可以使用Docker快速部署LNMP架构,并实现应用程序的隔离性和安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Docker部署LNMP完整教程](https://blog.csdn.net/ThesCript_j/article/details/107402923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [docker部署lnmp架构](https://blog.csdn.net/weixin_65643437/article/details/131124609)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿蔡BLOG

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

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

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

打赏作者

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

抵扣说明:

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

余额充值