Docker一键部署LNMP

之前一段时间,我已经把服务器上的应用全部Docker化了。我把我服务器上的LNMP配置,提取出来,来写一下如何用Docker部署一个最简单的LNMP。

项目地址

写了docker-compose,放在了Github上,还有些简单的配置文件。

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
如果对您有帮助,不妨请我喝杯奶茶哟~( ̄︶ ̄)↗
  • 本文作者: Zvonimir
  • 本文链接: https://www.iszy.cc/2019/03/09/dnmp/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!