Docker一键部署LNMP

发布时间 2023-09-04 12:16:20作者: 星流残阳

转载自好友 随遇而安 的博文。

项目地址

Github 项目地址: https://github.com/ZvonimirSun/dnmp

简介

通过 Docker 一键部署 LNMP。包含以下内容:

  • nginx:alpine
    • 说明
      • 已支持 TLS 1.3
    • 网站目录: ./nginx/html(docker 内 /usr/share/nginx/html)
    • 虚拟主机配置目录: ./nginx/conf.d(docker 内 /etc/nginx/conf.d)
  • mysql:5
    • 数据库目录: ./mysql
  • php:7-fpm-alpine:
    • 说明
      • 基于初始镜像额外安装了 pdo_mysqlmysqligd 插件。
      • 若想安装其他插件,请自行修改 Dockerfile
    • php.ini 目录: ./php-fpm
  • acme.sh
    • 说明:
      • 用于申请 ssl 证书。
      • 使用方法:参考官方文档
    • 证书存储目录: ./ssl

安装

  • 请确保已经安装 dockerdocker-compose
  • 将项目 clone 到本地
  • docker-compose.yml 文件中更改你需要的端口和数据库密码。
  • 执行 docker-compose up -d,并等待启动完成。

常见问题

Nginx:

  • 检查 Nginx 配置:
    • docker exec nginx nginx -t
  • Nginx 重载配置:
    • docker exec nginx nginx -s reload
  • 配置:
    • 启用 php: include enable-php.conf
    • 启用带 pathinfophp: include enable-php-pathinfo.conf
    • 启用 HSTS: add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;(此句可根据需要适当调整)

php:

  • 安装插件 (以 pdo_mysql 为例):
    • docker exec php docker-php-ext-install pdo_mysql
    • 最好修改 Dockerfile 实现,否则无法保留
  • 访问地址:
    • docker 中访问 php: http://php:9000

mysql:

  • 访问地址
    • docker 中访问 mysql 地址: http://mysql:3306
    • 宿主机访问 mysql 地址: http://localhost:3306
  • 如需外部访问 mysql,请自行修改 mysql 的端口映射为 3306:3306,并放开防火墙。
  • 连接数据库: docker-compose exec mysql mysql -u root -p