Docker lnmp

网络

docker network create \
--subnet "6.6.0.0/16" \
lnmp
  • --subnet 指定子网网段

Nginx

第一步:先准备主机目录结构

[root@iGuoJI /]# mkdir -p /home/lnmp/nginx/{conf,html,logs}

[root@iGuoJI /]# cd /home/lnmp/nginx/
[root@iGuoJI nginx]# ll
总用量 4
drwxr-xr-x. 2 root root  6 5月  23 12:42 conf
drwxr-xr-x. 2 root root  6 5月  23 12:46 html
drwxr-xr-x. 2 root root  6 5月  23 12:45 logs

第二步:复制容器中的配置到主机

先随便启动一个Nginx容器,再从这个容器中复制配置文件到主机,最后删除这个容器

[root@iGuoJI nginx]# docker run -d --name nginx nginx
049150441b28b490a9b833d864acf47a4b89c9a2486a90e4d9e245f97e9c96e3
[root@iGuoJI nginx]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
049150441b28   nginx     "/docker-entrypoint.…"   3 seconds ago   Up 2 seconds   80/tcp    nginx
[root@iGuoJI nginx]# docker cp nginx:/etc/nginx/nginx.conf ./
[root@iGuoJI nginx]# docker cp nginx:/etc/nginx/conf.d/default.conf ./conf/default.conf
[root@iGuoJI nginx]# ll
总用量 4
drwxr-xr-x. 2 root root  26 5月  23 13:12 conf
drwxr-xr-x. 2 root root  24 5月  6  12:46 html
drwxr-xr-x. 2 root root  41 5月  6  12:45 logs
-rw-r--r--. 1 root root 648 1月  25 23:13 nginx.conf
[root@iGuoJI nginx]# ll conf/
总用量 4
-rw-r--r--. 1 root root 1093 5月  23 13:11 default.conf
[root@iGuoJI nginx]# docker rm -f $(docker ps -aq)

 第三步:正式运行Nginx容器

docker run \
-d \
-p 80:80 \
--net lnmp \
--ip 6.6.0.10 \
--restart=always \
--name nginx \
-v /home/lnmp/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/lnmp/nginx/conf/:/etc/nginx/conf.d/ \
-v /home/lnmp/nginx/apps/:/usr/share/nginx/html/ \
-v /home/lnmp/nginx/logs/:/var/log/nginx/ \
nginx
  • -d 作为守护进程在后台运行
  • -p 对外暴露端口
  • --net 指定使用的网络网卡
  • --ip 指定固定IP
  • --restart 自动启动
  • --name 设置容器名称
  • -v 指定双端映射目录

MariaDB

第一步:先准备主机的目录结构

[root@iGuoJI lnmp]# mkdir -p /home/lnmp/mariadb/{conf,data,logs}
[root@iGuoJI lnmp]# ll /home/lnmp/mariadb/
总用量 0
drwxr-xr-x. 2 root root 6 5月  23 13:26 conf
drwxr-xr-x. 2 root root 6 5月  23 13:26 data
drwxr-xr-x. 2 root root 6 5月  23 13:26 logs

第二步:正式启动MariaDB容器

docker run \
-d \
-p 3306:3306 \
--name mariadb \
--net lnmp \
--ip 6.6.0.20 \
--restart=always \
-e MARIADB_ROOT_PASSWORD=123456 \
-v /home/lnmp/mariadb/conf/:/etc/mysql/conf.d/ \
-v /home/lnmp/mariadb/data/:/var/lib/mysql/ \
mariadb
  • -d 以后台守护进程运行
  • -p 暴露开放端口
  • --name 指定容器名称
  • --net 指定使用的网络
  • --ip 指定具体的IP
  • --restart 自动启动
  • -e 指定容器启动时的环境变量
  • -v 双端映射目录

第三步:查看日志

这里的mariadb是容器名称

docker logs mariadb

PHP

第一步:准备主机目录结构

[root@iGuoJI lnmp]# mkdir -p php/{conf,logs}
[root@iGuoJI lnmp]# ll php/
总用量 0
drwxr-xr-x. 2 root root 6 5月  24 08:57 conf
drwxr-xr-x. 2 root root 6 5月  24 08:57 logs

第二步:启动临时容器复制配置文件

[root@iGuoJI lnmp]# docker run -d --name php-fpm php:8.1.6-fpm
04251f7576a5048baed43b5ea5c5fd67e348881b3b95d71efc24adfa8ec3b98b
[root@iGuoJI lnmp]# docker cp php-fpm:/usr/local/etc/ /home/lnmp/php/conf/
[root@iGuoJI php]# cd /home/lnmp/php/conf/etc/php
[root@iGuoJI php]# ll
总用量 144
drwxr-xr-x. 2 root root    39 5月  14 06:29 conf.d
-rw-r--r--. 1 root root 72762 5月  14 06:29 php.ini-development
-rw-r--r--. 1 root root 72908 5月  14 06:29 php.ini-production
[root@iGuoJI php]# cp php.ini-production php.ini
[root@iGuoJI php]# ll
总用量 216
drwxr-xr-x. 2 root root    39 5月  14 06:29 conf.d
-rw-r--r--. 1 root root 72908 5月  24 09:10 php.ini
-rw-r--r--. 1 root root 72762 5月  14 06:29 php.ini-development
-rw-r--r--. 1 root root 72908 5月  14 06:29 php.ini-production
[root@iGuoJI php]# docker rm -f php-fpm

第三步:正式启动容器

一定要将主机的源码目录映射到容器中,不然PHP-FPM找不到文件

docker run \
-d \
-p 9000:9000 \
--net lnmp \
--ip 6.6.0.30 \
--name php-fpm \
--restart=always \
-v /home/lnmp/php/conf/etc/:/usr/local/etc/ \
-v /home/lnmp/nginx/apps/:/home/lnmp/nginx/apps/ \
php:8.1.6-fpm
  • -d 后台运行
  • -p 暴露端口
  • --net 指定网络
  • --ip 指定IP
  • --name 容器名称
  • --restart 自动启动
  • -v 双端目录映射

Nginx + PHP 测试

注意 fastcgi-param SCRIPT_FILENAME 的目录要正确

server {
    listen 80;
    listen [::]:80;
    server_name 127.0.0.1 192.168.3.129;
    root /home/lnmp/nginx/apps;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass 6.6.0.30:9000;
        fastcgi_param SCRIPT_FILENAME /home/lnmp/nginx/apps/$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}
[root@iGuoJI conf]# mv /home/lnmp/nginx/conf/default.conf /home/lnmp/nginx/conf/default.conf.bak
[root@iGuoJI conf]# vi /home/lnmp/nginx/conf/default.conf
[root@iGuoJI conf]# docker exec -it nginx nginx -s reload

Redis

第一步:准备主机目录结构

[root@iGuoJI lnmp]# mkdir -p redis/{conf,data,logs}
[root@iGuoJI lnmp]# ll redis
总用量 0
drwxr-xr-x. 2 root root 6 5月  25 08:42 conf
drwxr-xr-x. 2 root root 6 5月  25 08:42 data
drwxr-xr-x. 2 root root 6 5月  25 08:42 logs
[root@iGuoJI lnmp]#

第二步:正式启动容器

docker run \
-d \
-p 6379:6379 \
--net lnmp \
--ip 6.6.0.40 \
--name redis \
--restart=always \
-v /home/lnmp/redis/data/:/data \
-v /home/lnmp/redis/conf/:/usr/local/etc/redis/ \
redis

PHP + Redis

[root@iGuoJI data]# docker exec -it php-fpm pecl install redis
[root@iGuoJI data]# docker exec -it php-fpm docker-php-ext-enable redis
[root@iGuoJI data]# docker exec -it php-fpm php -m
[PHP Modules]
...
redis
...
[Zend Modules]
[root@iGuoJI data]#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值