docker-compose搭建lnmp环境

2023-05-16

使用命令创建文件和文件夹

mkdir -p {php,nginx/{,conf.d},www,mysql}
touch nginx/conf.d/php.conf
touch nginx/nginx.conf
touch php/php.ini
touch www/index.php

将以下代码保存为docker-compose.yml文件

version: '3'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/conf.d:/etc/nginx/conf.d:ro
      - ./www/:/www:rw
    environment:
      - TZ=Asia/Shanghai
    depends_on:
      - php

  php:
    image: php:7-fpm
    container_name: php
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./www:/var/www/html
      - ./php/php.ini:/usr/local/etc/php/php.ini
      - ./php/php-extensions:/usr/local/lib/php/extensions
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_HOST=mysql
      - MYSQL_USER=root
      - MYSQL_PASSWORD=123456
      - MYSQL_DATABASE=mydb
    depends_on:
      - mysql

  mysql:
    image: mysql:5.7.24
    container_name: mysql
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_DATABASE=mydb
    ports:
      - "3306:3306"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./mysql:/var/lib/mysql

其中,nginx使用的是最新版本的nginx镜像,监听80端口,将本地的nginx.conf文件挂载到容器的/etc/nginx/nginx.conf路径下。

php使用的是php:7-fpm镜像,将本地的www目录挂载到容器的/var/www/html路径下,将本地的php.ini文件挂载到容器的/usr/local/etc/php/php.ini路径下,设置了连接mysql数据库的环境变量。

mysql使用的是mysql:5.7镜像,设置了root用户的密码和创建的数据库名称,并监听3306端口,将本地的mysql目录挂载到容器的/var/lib/mysql路径下。

在本地创建一个www目录,然后在该目录下创建一个index.php文件,内容如下:

<?php
$servername = "mysql";
$username = "root";
$password = "123456";

// 创建连接
$conn = new mysqli($servername, $username, $password);

// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "连接成功";
?>

该文件是一个简单的mysql连接测试文件,使用mysqli连接mysql数据库,连接成功后输出“连接成功”。

在本地创建一个nginx目录, 然后在该目录下创建一个nginx.conf文件,内容如下:

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
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;
}

在本地创建一个nginx/conf.d目录 然后在该目录下创建一个php.conf文件,内容如下:

server {
    listen       80;
    root   /usr/share/nginx/html;
    index   index.html index.htm index.php;


    # 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;
    }

    location / {
        index  index.html index.htm index.php ;
        try_files $uri $uri/ /index.php?$query_string;
        autoindex  on;
    }


    location ~ \.php$ {
        #php73是容器命名
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
    }

}

该文件是一个简单的nginx配置文件,监听80端口,将/var/www/html目录设置为根目录,将php文件的请求转发到php容器的9000端口处理。

在本地创建一个php目录 然后在该目录下创建一个php.ini文件,内容如下:

memory_limit = 256M
upload_max_filesize = 100M
post_max_size = 100M
date.timezone = Asia/Shanghai
docker-compose up -d

接下来给php安装msyql扩展

docker exec -it php bash #进入php容器

docker-php-ext-install pdo pdo_mysql mysqli
docker-php-ext-enable pdo pdo_mysql mysqli

#退出容器后重启容器
exit
docker restart php

等待容器启动完成后,访问http://localhost,即可看到“连接成功”的输出。

注意:在执行docker-compose up -d命令之前,需要先在本地创建好www和mysql目录,并将上述代码保存为docker-compose.yml、index.php和nginx.conf文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker-compose搭建lnmp环境 的相关文章

随机推荐

  • JAVA代码实现字符串匹配(一)——BF、KMP

    话不多说 xff0c 直接进入主题 xff1a 题目描述 xff1a 给定两个字符串text和pattern xff0c 请你在text字符串中找出pattern字符串出现的第一个位置 xff08 下标从0开始 xff09 xff0c 如果
  • pwntools, terminal =‘tmux‘ 报错

    pwntools terminal 61 tmux 报错 Traceback most recent call last File exp py line 4 in gdb attach File home pwn pwn lib pyth
  • 更改手动导入的wsl的默认登录用户

    导入了一个wsl后 xff0c 每次登录都是root用户 xff0c 这个就有点不太好 网上的教程都是说在ps里用分发版的对应exe文件来设置默认用户 xff0c 但是导入的这个wsl我没找到这个exe 找了半天然后看了微软官方的教程 xf
  • v8安装fetch不上

    大佬方案 xff1a 白嫖github action 感谢大佬
  • pwnabletw-babystack

    BabyStack 思路 危险函数 xff0c strcpy 在copy的时候strcpy看似没有问题 xff0c 但是由于src的内容并没有清空 xff0c 还保存着被销毁栈的原有数据 xff0c 而strcpy是根据 34 x00 34
  • vmware win7虚拟机安装vmtools坑

    win7镜像下载 要下带SP1这个记号的 xff0c 表示有service pack 1这个补丁的 一定一定记得 xff0c 不然vmtools装不上 补丁 vmtools安装期间有很多驱动安不上的话 xff0c 首先 xff0c 安装一个
  • Python学习第10天——GUI初步

    Python学习第10天 1 多个库2 所写的代码 1 多个库 图形开发界面的库 Tkinter xff1a Tkinter 模块 Tk 接口 是 Python 的标准 Tk GUI 工具包的接口 Tk 和 Tkinter 可以在大多数的
  • IO扩展芯片PCF8574的中断引脚的理解

    The PCF8574 device provides an open drain output INT that can be connected to the interrupt input of a microcontroller A
  • java中的字符转换为数字 十进制转为二进制

    java中的字符转整数 span class token comment 方式1 span span class token keyword char span c span class token operator 61 span spa
  • xshell登录 安卓手机

    局域网远程连接手机 通过ssh登录到手机 Termux安装Termux安装openssh启动sshd服务配置登录密钥方法1方法2 手机查看当前用户名手机查看当前ip电脑cmd ssh到手机电脑xshell连接到ssh手机 通过ssh登录到手
  • vscode插件之Linux相关插件

    Linux相关插件 1 Remote SSH 远程连接插件2 shell format 代码格式化工具3 shellman 代码语法提示4 Linux ansible 语法提示5 皮肤设置5 1 Dracula Official5 2 ta
  • linux-优化 PS1

    PS1 记录 span class token builtin class name export span span class token assign left variable span class token environmen
  • cmd 设置 路由 route

    查询路由 route print 删除单条路由 route delete span class token number 192 168 span 4 0 span class token punctuation span 网络地址 spa
  • samba 共享文件 Linux 为共享端 windows 为客户端

    1 安装samba yum span class token parameter variable y span span class token function install span samba 2 创建新用户 创建共享目录 配置s
  • dell 服务器 重装Linux系统

    dell 服务器 从U盘启动安装linux系统 工具 xff1a linux 系统 U盘启动盘 参考博客 ultraISO 制作 linux系统U盘启动盘 U盘启动盘接入dell服务器USB接口 尽量拆入 服务器后面的u口 1 开机启动de
  • LINUX安装openssl

    openssl 官网下载 https www openssl org source old 1 解压openssl包 xff1a span class token function tar span span class token par
  • 设置win服务器代理

    在Windows系统下 xff0c 可以使用以下命令设置代理地址 开启和关闭代理 xff1a 1 设置代理 netsh winhttp span class token builtin class name set span proxy m
  • docker frp搭建http代理

    docker compose yml version span class token string 34 2 34 span services frpc image alpine latest hostname frpc restart
  • Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移 超融合

    纯粹是为了折腾 xff1a xff09 1 环境介绍 存储也可以说是超融合 OS xff1a Virtual Environment 6 2 4 pve231 主机 pve118 172 16 1 118 虚拟机1 pve119 172 1
  • docker-compose搭建lnmp环境

    使用命令创建文件和文件夹 span class token function mkdir span p span class token punctuation span php nginx span class token punctua