前一篇文章介绍了如何在OpenWrt系统中安装docker-compose 工具,接下来就要发挥他的作用,利用安装的docker-compose
工具搭建一个网站WEB环境。如果你的软路由性能强劲只用来做路由器是不是太浪费资源?为了更充分的利用软路由的性能,我们可以用docker来做任何事情。
我平时需要一个PHP+Nginx+Mysql+Redis
的网站环境,利用docker-compose
可以轻松构建这样一个环境,你可以自己写也可以利用网上别的做好的,我这里拿张戈的DOMP来做。
项目地址:https://github.com/jagerzhang/domp
环境搭建
修改UHTTPD 的默认端口
默认UHTTPD占用了80端口,修改成其他的。
vim /etc/config/uhttpd
把80端口修改成808或者其他
list listen_http '0.0.0.0:808'
list listen_http '[::]:808'
重启uhttpd 服务
/etc/init.d/uhttpd restart
之后访问你的LUCI界面需要加上808端口,比如:
https://192.168.1.252:808
如果你的硬盘较小,你可以挂在U盘到data目录下,我做的系统默认是1G,自己用完全足够了。
克隆代码
mkdir -p /data && cd /data
git clone https://github.com/jagerzhang/domp.git
修改MySQL数据库的密码
vim docker-compose.yml
找到:
- "MYSQL_ROOT_PASSWORD=yourpassword"
将 yourpassword 改成自定义密码
找到:
build: ./etc/php/dockerfile/72/
将72改成需要的php版本,目前支持56、70、71、72 四个版本,若无版本刚需,使用默认的7.2即可!
若因国内功夫墙导致php-fpm在线编译失败,可以如下修改:
vim docker-compose.yml
找到:
php-fpm:
build: ./etc/php/dockerfile/72/
container_name: php-fpm
image: php-fpm:7.2
改为:
php-fpm:
#build: ./etc/php/dockerfile/72/
container_name: php-fpm
image: jagerzhang/php-fpm:7.2 # 这里直接使用张戈做好的镜像即可,版本同样有 5.6,7.0-7.2。如果一定有特殊php模块需求则不能使用。
修改php模块(Ps:绝大部分网站无需修改,除非出现php模块缺失报错)
vim etc/php/dockerfile/72/Dockerfile # 注意你选择的实际版本,这里说7.2版本修改说明,其他版本可参考修改。
# 找到如下语句,若满足要求则无需修改,若缺少某模块,则加上 php72w-模块名称,pecl的可能要额外加上 pecl
yum install -y memcached php72w-fpm php72w-gd php72w-pecl-memcached php72w-opcache php72w-mysql php72w-mbstring php72w-pecl-redis
启动domp
docker-compose up -d
docker ps # 查看是否正常启动
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2fdcd10d05c6 openresty/openresty:centos "/usr/bin/openresty …" 2 hours ago Up 2 hours openresty
eb5684527e4b php-fpm:7.2 "php-fpm -F" 2 hours ago Up 2 hours php-fpm
41381dea3d7f redis:latest "docker-entrypoint.s…" 2 hours ago Up 2 hours 127.0.0.1:6379->6379/tcp redis
1f6278298539 mysql:8.0 "docker-entrypoint.s…" 4 days ago Up 4 days 127.0.0.1:3306->3306/tcp, 33060/tcp mysql
配置网站
虚拟主机配置说明
domp 默认已经自带了2种虚拟主机配置:yourdomain.com.conf
和 yourdomain.com_cache.conf
,第一个不带redis缓存,第二个带redis
缓存,自行选择一个,然后删除另一个即可。然后参考这个配置文件来定制自己网站的配置文件。若看不懂这个配置文件,可以直接拷贝网站原来的vhost
配置文件也可以。
https证书配置说明
https证书请放置到 domp/etc/nginx/cert
目录,然后在vhost
配置中引用即可,注意在vhost
里面的配置要变为:/etc/nginx/cert/
证书名字 ,而非domp/etc/nginx/cert
目录,因为已经挂载到了docker里面了!!!
缓存配置说明
若开启了openresty+redis缓存,且正好又是wordpress网站,则可以安装下nginx-hepler和Redis Object Cache插件,天然绝配!后续有时间会有domp一系列的文章分享,敬请期待:https://zhang.ge/ 。
你好,nginx下的HTTPS跟OPENWRT下uhttpd的HTTPS冲突啊,在防火墙里怎么映射都是会去到OPENWRT登录界面上,我也找不到在哪关了uhttpd的443监听,打开/etc/config/uhttpd文件也没有看到跟443有关的选项。。
@netitgo: 默认情况下没有开启HTTPS吧,你可以利用
lsof -i:443
查看是什么专用了443端口。