同步操作将从 后盾人/docker 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
houdunren.com @ 向军大叔
本项目是高可用的LNMP开发环境,同时支持代理转发,实现单台服务器运行多个DOCKER网站。
本项目为视频代码或直播课程代码,希望大家能给个
star
这是对我们最好的鼓励和肯定。
项目特点
后盾人 已经发布了DOCKER相关视频教程,可以帮助你掌握DOCKER技术。
Github 仓库:https://github.com/houdunwang/docker
Gitee 仓库:https://gitee.com/houdunren/docker
为了在本地测试成功可以先关闭防火墙
在学习阶段可以先关闭防火墙,保证端口不受访问限制,以下是LINUX管理防火墙的基本指令
sudo systemctl stop firewalld.service
练习时也可以永久关闭防火墙
sudo systemctl disable firewalld.service
查看防火墙状态
sudo systemctl status firewalld.service
然后重起 DOCKER
sudo systemctl restart docker
关闭setlinux
修改配置文件
sudo vim /etc/selinux/config
SELINUX
值为disabledSELINUX=disabled
从 GITHUB 或 GITEE 下CLONE项目代码
git clone https://gitee.com/houdunren/docker.git
cd docker
下面是实验的文件结构,便于有个全局认识
.
├── docker-compose.yaml 容器编排
├── mysql MYSQL容器
│ ├── Dockerfile 镜像配置
│ ├── data 数据结构
│ └── log 运行日志
├── nginx
│ ├── Dockerfile
│ ├── config
│ │ └── default.conf NGINX配置
│ └── log 运行日志
│ ├── access.log
│ └── error.log
├── redis
│ ├── Dockerfile
│ ├── config
│ │ └── redis.conf REDIS配置
│ └── log 运行日志
│ ├── access.log
│ └── error.log
└── php
│ ├── Dockerfile
│ └── config
│ └── php.ini PHP配置文件
└── www 应用目录
├── hdcms
│ ├── index.html
│ └── index.php
└── houdunren
├── index.html
└── index.php
通过修改 .env 可以对容器的参数进行定制,比如数据库帐号密码等
#容器名前缀
CONTAINER_NAME_PRE=houdunren
#宿主机映射到容器的端口
NGINX_PORT=80
#宿主机映射到MYSQL容器的端口
MYSQL_PORT=33060
#ROOT管理员密码
MYSQL_ROOT_PASSWORD=admin888
#新建数据库
MYSQL_DATABASE=houdunren
#新建普通用户帐号密码
MYSQL_USER=houdunren
MYSQL_PASSWORD=houdunren
#MYSQL初始后强制ROOT帐号改密码
MYSQL_ONETIME_PASSWORD=no
#允许MYSQL空密码
MYSQL_ALLOW_EMPTY_PASSWORD
系统包括NGINX、PHP等软件的项目配置文件,修改这些配置文件不需要重新编译,只需要在docker-compose.yaml
文件所在目录下重起容器就可以了。
docker-compose restart
执行以下命令将编译镜像并启动容器
docker-compose up -d
查看容器
docker ps
如果在本地测试时,修改 /etc/hosts
文件中添加两个域名,线上使用将域名解析过来就可以 了
127.0.0.1 hdcms.test
127.0.0.1 houdunren.test
现在可以通过 http://houdunren.test
访问项目了
下面来安装LARAVEL项目,你可以安装任何其它PHP项目来使用,具体可以查看后盾人在线文档或视频学习LARAVEL的安装使用。
cd www
rm *
laravel new .
因为LARAVEL要解析到public目录,修改NGINX配置文件 nginx/config/default.conf
目录相关内容
location / {
...
root /www/houdunren/public;
...
}
...
location ~ \.php$ {
...
fastcgi_param SCRIPT_FILENAME /www/houdunren/public$fastcgi_script_name;
...
}
修改配置后需要生起容器服务
docker-compose restart
现在访问就可以看到LARAVEL欢迎页面了
下面我们使用MYSQL管理GUI工具DBeaver连接容器数据库,默认MYSQL端口是33060可以在.env文件中修改。
如果修改了.env 中的配置需要重新编译容器
docker-compose up -d
使用DBeaver访问,mysql 默认密码已经在.env中设置为admin888
上面使用的是一个容器中存在多个项目,现在我们讨论的是每个项目是独立的容器。
为每个项目设置配置项,如果端口或容器名相同会造成冲突无法启动,所以要为不同项目配置独立的端口
houdunren/.env
#容器名前缀
CONTAINER_NAME_PRE=hdcms
#宿主机映射到容器的端口
PORT=8081
#宿主机映射到MYSQL容器的端口
MYSQL_PORT=33061
hdcms/.env
#容器名前缀
CONTAINER_NAME_PRE=hdcms
#宿主机映射到容器的端口
PORT=8082
#宿主机映射到MYSQL容器的端口j
MYSQL_PORT=33062
在两个项目中分别执行命令完成编译
docker-compose up -d
现在可以看到容器列表
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
在宿主环境中安装NGINX服务器软件,NGINX在不同系统中的配置文件存放目录不同
下面安装 NGINX 服务器软件
brew install nginx
调试中难免有错误发生,通过错误日志可以很好排查
cat /usr/local/var/log/nginx/error.log
修改配置文件后需要重起NGINX,下面介绍基本的管理命令
#开启
brew services start nginx
#停止
brew services stop nginx
#重起
brew services restart nginx
文件说明
/usr/local/etc/nginx/nginx.conf
为主配置文件/usr/local/etc/servers
目录存放自定义配置文件,这样就不需要改主配置文件了下面安装 NGINX 服务器软件
yum update && yum install nginx -y
调试中难免有错误发生,通过错误日志可以很好排查
cat /usr/local/var/log/nginx/error.log
修改配置文件后需要重起NGINX,下面介绍基本的管理命令
#开启
systemctl start nginx
#停止
systemctl stop nginx
#重起
systemctl restart nginx
文件说明
/etc/nginx/nginx.conf
为主配置文件/etc/nginx/conf.d
目录存放自定义配置文件,这样就不需要改主配置文件了如果在本地测试时,修改 /etc/hosts
文件中添加两个域名,线上使用将域名解析过来就可以 了
127.0.0.1 hdcms.test
127.0.0.1 houdunren.test
修改主配置文件 nginx.conf
将NGINX默认8080端口改变80
...
server {
...
listen 80;
server_name localhost;
...
}
在NGINX配置目录(centos为/etc/nginx/conf.d
)创建 hdcms.conf , houdunren.conf 两个配置文件
houdunren.conf
server {
listen 80;
server_name houdunren.test;
access_log /var/log/nginx/houdunren.log;
error_log /var/log/nginx/houdunren.error.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8081;
}
}
hdcms.conf
server {
listen 80;
server_name hdcms.test;
access_log /var/log/nginx/hdcms.log;
error_log /var/log/nginx/hdcms.error.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8082;
}
}
现在使用不同域名访问就可以被代理到不同的容器中了
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。