-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
108 additions
and
109 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,140 +1,139 @@ | ||
1. docker-lnmp 项目帮助开发者快速构建本地开发环境,包括Nginx、PHP、MySQL、Redis、MongoDB、ElasticSearch、Kibana服务镜像,支持服务版本切换,并支持配置文件和日志文件映射,不限操作系统; | ||
2. 此项目适合个人开发者本机部署,可以快速切换服务版本满足学习服务新版本的需求; 也适合团队中统一开发环境,设定好配置后一键部署, 便于提高团队开发效率; | ||
2. PHP 支持多版本 包括php5.6、 php7.1、php7.2、php7.3、php7.4、php8.0、php8.1 版本; | ||
3. MySQL 支持 5.7 、8.0 版本; | ||
4. Redis 支持 4.0 、5.0 、6.0 版本; | ||
5. ElasticSearch 和 Kibana 是 7.17.0 版本; | ||
6PHP 扩展包括了gd、grpc、redis、protobuf、memcached、swoole等; | ||
|
||
### 一. [install docker](https://github.com/ogenes/docker-lnmp/wiki/Docker-%E7%AE%80%E4%BB%8B%E5%8F%8A%E5%AE%89%E8%A3%85) | ||
|
||
1. docker-lnmp 项目帮助开发者快速构建本地开发环境,包括Nginx、PHP、MySQL、Redis服务镜像,支持服务版本切换,并支持配置文件和日志文件映射,不限操作系统; | ||
|
||
2. 此项目适合个人开发者本机部署,满足学习和工作需求; 也适合团队中统一开发环境,设定好配置后一键部署, 便于提高团队开发效率; | ||
|
||
3. PHP 同时支持 php5.6、php7.1、php7.2、php7.4、php8.0、php8.1 版本; | ||
|
||
4. MySQL 支持 5.7 、8.0 版本切换,可通过env参数配置选择; | ||
|
||
5. Redis 支持 4.0 、5.0 、6.0 版本切换,可通过env参数配置选择; | ||
|
||
6. PHP 扩展另补充了gd、grpc、redis、protobuf、memcached、swoole等,可通过compse.yml中args控制; | ||
|
||
![image-20220805140235358](https://img.ogenes.cn/img/2022/image-20220805140235358.png) | ||
|
||
### 一. [安装 docker](https://www.runoob.com/docker/macos-docker-install.html) | ||
|
||
```shell | ||
``` | ||
$ docker -v | ||
Docker version 20.10.16, build aa7e414 | ||
Docker version 19.03.8, build afacb8b | ||
$ docker-compose -v | ||
Docker Compose version v2.6.0 | ||
``` | ||
docker-compose version 1.25.5, build 8a1c60f6 | ||
### 二. 下载项目 | ||
``` | ||
|
||
```shell | ||
### 二. download | ||
```$xslt | ||
$ pwd | ||
/Users/55haitao/data/tt | ||
$ git clone git@gitlab.rdc.55haitao.com:john.yi/docker-lnmp.git | ||
/d/app | ||
$ git clone https://github.com/ogenes/docker-lnmp.git | ||
``` | ||
|
||
### 三. 启动 | ||
|
||
Note: 首次执行耗时较久,耐心等待;如果有些镜像下载失败,请参考docker镜像加速或者科学上网。 | ||
|
||
### 三. init | ||
```shell script | ||
$ cd docker-lnmp | ||
$ docker-lnmp git:(production) cp .env.example .env | ||
$ docker-lnmp git:(production) ssh-keygen -C 'ogenes-docker' #注意修改路径为当前目录 ./id_rsa | ||
$ docker-lnmp git:(production) docker-compose up -d | ||
#如果不需要启动所有服务,可以加上service参数选择服务分开启动: docker-compose up -d nginx php71 | ||
``` | ||
```sql | ||
docker exec -it mysql bash | ||
mysql -uroot -p 123456 | ||
use mysql; | ||
select host from user where user='root'; | ||
update user set host = '%' where user ='root'; | ||
flush privileges; | ||
$ cp .env.example .env | ||
``` | ||
|
||
### 四. 项目配置(以finance-api项目为例) | ||
|
||
1. nginx根目录为跟 docker-lnmp 同级的 www 目录。(根目录可以通过修改 .env 文件的 WEB_ROOT_PATH 配置项更改,使用相对路径) | ||
|
||
```shell | ||
$ pwd | ||
/Users/55haitao/data/tt | ||
$ ll | ||
total 0 | ||
drwxr-xr-x 21 55haitao staff 672B Aug 5 10:14 docker-lnmp | ||
drwxr-xr-x 3 55haitao staff 96B Aug 5 10:12 www | ||
``` | ||
|
||
2. 从gitlab仓库下载项目 | ||
|
||
```shell | ||
➜ cd www | ||
#我在www下面新建了一个目录 haitao 用来放公司内部项目,也可以直接都放到 www 下面 | ||
➜ mkdir haitao | ||
➜ cd haitao | ||
➜ git clone git@gitlab.rdc.55haitao.com:midplatform/finance-center/finance-api.git | ||
``` | ||
|
||
3. 下载完成后,执行composer自动加载vendor | ||
|
||
>finance-api 是运行在php81里面的, 需要进入到php81容器内运行composer. | ||
```shell | ||
➜ docker exec -it php81 bash | ||
root@406575c28de7:/var/www# cd haitao/finance-api/ | ||
root@406575c28de7:/var/www/haitao/finance-api# cp .env.example .env | ||
root@406575c28de7:/var/www/haitao/finance-api# composer install | ||
root@406575c28de7:/var/www/haitao/finance-api# php artisan -V | ||
Laravel Framework 9.22.1 | ||
``` | ||
|
||
>当然也可以直接运行命令 | ||
### 四. run | ||
```shell script | ||
#首次执行耗时较久,耐心等待 | ||
$ docker-compose up -d nginx php74 mysql redis | ||
$ docker ps | ||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES | ||
ba864491ac22 docker-lnmp_mysql "docker-entrypoint.s…" 22 minutes ago Up 6 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql | ||
68ca3dcdf667 docker-lnmp_nginx "nginx -g 'daemon of…" 42 minutes ago Up 3 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginx | ||
9e46003ebe39 docker-lnmp_php "docker-php-entrypoi…" 42 minutes ago Up 4 seconds 0.0.0.0:9000->9000/tcp php | ||
e1c96bbea465 docker-lnmp_redis "docker-entrypoint.s…" 51 minutes ago Up 5 seconds 0.0.0.0:6379->6379/tcp redis | ||
``` | ||
|
||
```shell | ||
➜ docker exec -it php81 bash -c "cd haitao/finance-api; cp .env.example .env; composer install" | ||
➜ docker exec -it php81 bash -c 'cd haitao/finance-api; php artisan -V' | ||
Laravel Framework 9.22.1 | ||
``` | ||
### 五. test | ||
``` | ||
$ cp nginx/conf.d/default.conf.example nginx/conf.d/default.conf | ||
$ docker-compose restart nginx | ||
4. composer成功之后,配置 nginx | ||
#绑定本机hosts | ||
127.0.0.1 default.dev.com | ||
> 部分项目的nginx本地配置模板已经放入了 nginx/conf.d/55haitao/ 目录内; | ||
> | ||
> finance-api 的配置是已有模板的,其他项目没有的话可以参考它自行配置。 | ||
> | ||
> 需要注意的是, 如果你的项目目录跟我的不一致, 需要修改对应项目的 root 路径。 | ||
``` | ||
访问 http://default.dev.com/ 得到响应 Hello Ogenes! 表示运行成功。 | ||
|
||
> 参考 55haitao.conf.bak 新建配置文件 nginx/conf.d/55haitao.conf, 在里面引入配置模板即可: | ||
![QQ截图20210114105752.png](https://i.loli.net/2021/01/14/NPTJhEgcszFZaOp.png) | ||
|
||
``` | ||
include /etc/nginx/conf.d/55haitao/finance-api.local.55haitao.com.conf; | ||
``` | ||
### 六. note | ||
默认版本为: | ||
MySQL 5.7 | ||
Redis 5.0 | ||
可以通过修改 env 文件的 MYSQL_VERSION 、REDIS_VERSION 来选择其他版本 | ||
MySQL 和 Redis 切换版本时,注意切换配置文件 | ||
|
||
项目目录默认为 docker-lnmp/www 目录 | ||
可以通过修改 env 文件的 WEB_ROOT_PATH 来指定其他目录 | ||
|
||
nginx 虚拟主机配置文件在 docker-lnmp/nginx/conf.d 目录内, 可以参考 default 项目配置。 | ||
|
||
5. 配置本地hosts | ||
### 七. restart | down | rebuild | ||
|
||
>需要将上述server_name解析到本机,可通过编辑 /etc/hosts 文件生效。 | ||
```shell script | ||
|
||
```shell | ||
➜ sudo vim /etc/hosts | ||
#加入行 | ||
127.0.0.1 finance-api.local.55haitao.com | ||
``` | ||
#修改配置文件后重启即可 | ||
$ docker-compose restart nginx php | ||
Restarting nginx ... done | ||
Restarting php ... done | ||
|
||
对于经常更改 /etc/hosts 文件的同学, 这里推荐一个hosts 管理工具 [SwitchHost](https://github.com/oldj/SwitchHosts/releases) 。 | ||
# 修改 dockerfile 或者 env 文件之后 rebuild 可生效 | ||
$ docker-compose up -d --build php nginx mysql | ||
|
||
6. 重启 nginx 服务 | ||
# 停止 | ||
$ docker-compose stop | ||
|
||
```shell | ||
➜ docker-compose restart nginx | ||
Restarting nginx ... done | ||
``` | ||
# 停止并删除容器 | ||
$ docker-compose down | ||
|
||
7. 访问 finance-api.local.55haitao.com 验证 | ||
# 停止并删除容器+镜像 | ||
$ docker-compose down --rmi all | ||
|
||
![image-20220805135545127](https://img.ogenes.cn/img/2022/image-20220805135545127.png) | ||
``` | ||
|
||
其他项目同理,下载对应代码,增加nginx配置, 然后重启nginx即可。 | ||
### 目录结构 | ||
|
||
``` | ||
. | ||
├── LICENSE | ||
├── README.md | ||
├── data | ||
│ ├── elasticsearch | ||
│ ├── mysql | ||
│ ├── redis | ||
├── docker-compose.yml | ||
├── elasticsearch | ||
│ └── Dockerfile | ||
├── kibana7 | ||
│ └── Dockerfile | ||
├── logs | ||
├── mongo | ||
│ ├── Dockerfile | ||
│ └── mongod.conf | ||
├── mysql | ||
│ ├── Dockerfile | ||
│ └── docker.cnf | ||
├── nginx | ||
│ ├── Dockerfile | ||
│ ├── conf.d | ||
│ │ ├── default.conf.example | ||
│ └── nginx.conf | ||
├── php | ||
│ ├── Dockerfile | ||
│ └── config | ||
│ ├── php-fpm.conf | ||
│ ├── php-fpm.d | ||
│ │ ├── docker.conf | ||
│ │ ├── www.conf | ||
│ │ └── zz-docker.conf | ||
│ └── php.ini | ||
├── redis | ||
│ ├── Dockerfile | ||
│ ├── redis4.conf | ||
│ ├── redis5.conf | ||
│ └── redis6.conf | ||
├── text.log | ||
└── www | ||
└── default | ||
└── index.php | ||
``` | ||
|