最近写了个新项目, 一键部署 Node.JS,PHP 开发环境 (docker,Node.JS,PHP,nginx,mongo,MySQL,Redis)
因为最近开始同时写 Node.JS,PHP 项目, 还要部署到测试, 预发布, 线上环境, 其他同事也需要一套相同的环境. 不同平台下搭建一整套开发环境又很繁琐, 因此有了这个项目.
GitHub 地址: https://github.com/wallace5303/dnnmmp
如果有疑问或者使用异常, 请帮忙指出. 感谢!
详情如下:
基于 docker 的 Node.JS,PHP 开发环境
Dnnmmp 包含以下组合
- dnm(Docker + Node.JS + MySQL/MongoDB/Redis)
- dnmn(Docker + Node.JS + MySQL/MongoDB/Redis + Nginx)
- dnmp(Docker + Nginx + MySQL/MongoDB/Redis + PHP)
支持系统版本: Linux,MacOs,Windows
特性
1. 主要针对 Node.JS 开发人员, PHP 开发人员, 运维, 前端
2. 支持多版本 PHP,Node.JS
3. 兼容 OneinStack 的配置文件, 完善的配置说明
4. 支持绑定多个域名
5. 清晰的 docker 文件, 配置文件, 日志文件结构
6. 支持 PHP 扩展安装
7. 程序是基于 docker 最新 stable 版, 并从官方仓库下载
8. 持续不断更新, 支持交互, 无人值守安装
可选软件版本
docker 官方仓库 https://docs.docker.com/samples/
- nginx=1.17 / 1.16
- MySQL=8 / 5.7 / 5.6
- Node.JS=12 / 10 / 8
- PHP=7.4 / 7.3 / 7.2 / 7.1 / 5.6
- MongoDB=4 / 3
- Redis=5 / 4
目录
1. 安装步骤
2. 命令行使用
3.PHP 扩展
4. 日志
附录 1:docker 安装
附录 2: 目录结构
附录 3: 收集的程序员常用网站
附录 4: 常见的问题
1. 安装步骤
本地安装 Git,docker 和 docker-compose(建议使用最新版本: 1.23).
附录 1:docker 安装
clone 项目:
- # 如果不是 `root` 用户, 那么将当前用户加入 `docker` 用户组
- $ sudo gpasswd -a ${
- USER
- } docker
- # 获取项目
- $ Git clone https://github.com/wallace5303/dnnmmp.git
构建并启动:
- $ cd dnnmmp
- # 构建并运行 (第一次安装建议使用此命令, 方便查看打印的日志)
- $ docker-compose up
- # 后台运行
- $ docker-compose up -d
注意: Windows 安装 360 安全卫士的同学, 请先将其退出, 不然安装过程中可能 Docker 创建账号过程可能被拦截, 导致启动时文件共享失败;
查看生成的镜像:$ docker image ls
查看启动的容器:$ docker container ls
附录 4: 常见的问题
访问在浏览器中访问:
- http://localhost/ ,
- https://localhost/
常用命令
- # 服务列表: Redis|MySQL|MongoDB|nginx|PHP
- # 列出 Compose 文件中包含的镜像
- $ docker-compose images
- # 创建所有服务并启动
- $ docker-compose up
- $ docker-compose up -d # 全部后台启动
- # 创建单个服务
- $ docker-compose up Redis
- $ docker-compose up Redis -d # 后台启动
- # 如果容器已经创建
- # 启动
- $ docker-compose start Redis
- # 停止
- $ docker-compose stop Redis
- # 重启
- $ docker-compose restart Redis
- # 重新构建
- $ docker-compose build Redis
- # 删除
- $ docker-compose rm Redis
更多 docker 命令, 请查看:
- https://docker_practice.gitee.io/appendix/command/
- docker-compose
2. 命令行使用
docker 安装的程序与直接安装在宿主机上的程序不同, 如果需要使用命令行, 有两种方法,
(1) 方法一: 进入 docker 创建的容器中执行命令
(2) 方法二 (推荐): 添加 bash 快捷命令, 如下:
编辑
~/.bashrc(或 ~/.zshrc)
, 并在行尾添加
- # 如果电脑上已经安装过软件, 请更换函数名称
- node () {
- tty=
- tty -s && tty=--tty
- docker run \
- $tty \
- --interactive \
- --rm \
- --volume $PWD:/var/www/html:rw \
- --workdir /var/www/HTML \
- dnnmmp_node node "$@"
- }
- NPM () {
- tty=
- tty -s && tty=--tty
- docker run \
- $tty \
- --interactive \
- --rm \
- --volume $PWD:/var/www/HTML:rw \
- --workdir /var/www/HTML \
- dnnmmp_node NPM "$@"
- }
- PHP () {
- tty=
- tty -s && tty=--tty
- docker run \
- $tty \
- --interactive \
- --rm \
- --volume $PWD:/var/www/HTML:rw \
- --workdir /var/www/HTML \
- dnnmmp_php72 PHP "$@"
- }
- Composer () {
- tty=
- tty -s && tty=--tty
- docker run \
- $tty \
- --interactive \
- --rm \
- --user $(id -u):$(id -g) \
- --volume ~/dnnmmp/Composer:/tmp \
- --volume /etc/passwd:/etc/passwd:ro \
- --volume /etc/group:/etc/group:ro \
- --volume $(pwd):/App \
- Composer "$@"
- }
(3) 让修改的内容生效
$ source ~/.bashrc(或 ~/.zshrc)
注意: 如果提示命令不存在, 请重新打开终端窗口.(因为旧的终端, 并不会重新加载该文件)
(4) 查看版本信息
- $ node -v
- v10.16.0
- $ NPM -v
- 6.9.0
- $ PHP -v
- PHP 7.2.19 (cli) (built: Jun 28 2019 03:58:08) ( NTS )
- Copyright (c) 1997-2018 The PHP Group
- Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
- with Zend OPcache v7.2.19, Copyright (c) 1999-2018, by Zend Technologies
- $ Composer -v
- Composer version 1.8.6 2019-06-11 15:03:05
快速进入容器
了解 docker 的同学知道, 经常需要进入容器中查看内容, 配置进入容器命令.
编辑 ~/.bashrc(或 ~/.zshrc), 添加:
- alias dmysql='docker exec -it dnnmmp_mysql_1 /bin/bash'
- alias dredis='docker exec -it dnnmmp_redis_1 /bin/sh'
- alias dnginx='docker exec -it dnnmmp_nginx_1 /bin/sh'
- alias dmongodb='docker exec -it dnnmmp_mongodb_1 /bin/sh'
- alias dphp72='docker exec -it dnnmmp_php72_1 /bin/bash'
使生效:
$source ~/.bashrc(或 ~/.zshrc)
3.PHP 扩展
添加扩展: 编辑. env 文件
- # 从扩展列表中选择相应的扩展, 添加到此行中, 英文逗号隔开
- PHP72_EXTENSIONS=curl,opcache,Redis
重新 build PHP 镜像: docker-compose build php72 docker-compose up -d
4. 日志
PHP 日志目录:./log/PHP/
nginx 日志目录:./log/nginx/
MySQL 数据及日志目录:./MySQL/
mongo 数据及日志目录:./mongo/
附录 1:docker 安装
docker 安装 https://docker_practice.gitee.io/install/
docker-compose 安装 https://docker_practice.gitee.io/compose/
附录 2: 目录结构
/
├── Composer Composer 配置与缓存
├── config 配置文件
│ ├── MongoDB MongoDB
│ ├── Dockerfile Dockerfile 文件
│ ├── MySQL MySQL
│ ├── Dockerfile
│ ├── MySQL.cnf MySQL 配置文件
│ ├── nginx nginx
│ ├── conf.d
│ ├── certs 秘钥
│ ├── localhost_https.conf https 虚拟主机
│ ├── localhost.conf 虚拟主机
│ ├── Dockerfile
│ ├── nginx.conf nginx 配置
│ ├── node node
│ ├── Dockerfile
│ ├── PHP PHP
│ ├── extensions 扩展及脚本
│ ├── install.sh 基础安装脚本
│ ├── php56.sh php5.6 扩展安装脚本
│ ├── php72.sh php7.2 扩展安装脚本
│ ├── Dockerfile
│ ├── PHP-fpm.conf PHP-fpm 配置文件
│ ├── PHP.INI PHP.INI 配置文件
│ ├── Redis Redis
│ ├── Dockerfile
│ ├── Redis.conf Redis 配置文件
├── mongo MongoDB 数据目录
├── log 日志目录
├── MySQL MySQL 数据目录
├── docker-compose.YAML Docker 服务配置
├── .env 环境配置
└── www 代码目录
来源: https://segmentfault.com/a/1190000019906077