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_mysql
、mysqli
、gd
插件。 - 若想安装其他插件,请自行修改
Dockerfile
。
- 基于初始镜像额外安装了
php.ini
目录:./php-fpm
- 说明
- acme.sh:
- 说明:
- 用于申请 ssl 证书。
- 使用方法: 参考官方文档
- 证书存储目录:
./ssl
- 说明:
安装
- 请确保已经安装
docker
和docker-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
- 启用带
pathinfo
的php
: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
相关文章
-
2022-04-13
最近换个新服务器,准备装下 docker,才发现 docker compose 已经出 v2 版本一段时间了。安装和使用上和 v1 有一些差别,在此记录。
-
2019-02-13
本文介绍一下如何通过 Docker 部署 acme.sh 申请证书,并添加 crontab 任务自动更新证书。
-
2019-08-05
今天来简单记录一下在 CentOS 7 上手动部署 MySQL 5.7 的过程。
-
2018-08-15
也曾想过自己写一个短域名服务,毕竟原理还是相当简单的。但是前端是真的难搞,我是真的玩不来。既然已经有造好的轮子,干嘛还自己造,是吧。这个 Polr 就是一个非常好用的短域名服务,功能也比较完善。在这里记录一下部署的过程。最近折腾 docker,这玩意在 docker 中表现挺诡异的,我准备切换成现有的 yourls 的 docker 了。
-
2021-10-05
今天记录一下利用 Nexus OSS 建立 Docker 镜像代理的过程。