工欲善其事必先利其器开始进行web开发之前,都需要搭建好基本的开发环境.个人用到的有nginx、redis、mysql、node.js.搭建环境不同的方法使用apt(ubuntu)、brew(mac os)一个个安装脚本: LNMP一键安装包源码编译上面的解决方案都有一个共同的缺点一旦系统重装,需要重新安装、配置(有多台电脑时,开发环境版本容易不一致)没有版本控制系统,软件配置维护麻烦更好的解决方案 —— docker基于docker(18.03以上)搭建nginx、 redis 、mysql 服务。项目结构.├── .env # 默认为dev的环境变量├── .gitignore├── README.md├── container # 不同容器的配置文件│   ├── mysql│   │   └── docker-compose.yml│   ├── nginx│   │   ├── conf│   │   ├── docker-compose.prod.yml│   │   └── docker-compose.yml│   └── redis│   └── docker-compose.yml└── prod # prod的环境变量 └── .envdocker-compose 在运行时会使用当前目录下的.env文件,并且不支持指定env文件,所以需要多个不同环境时,只能在对应文件夹下建立.env文件项目内容通过.env文件配置整个项目所需要的环境变量# file .env# 项目名称COMPOSE_PROJECT_NAME=site# compose文件COMPOSE_FILE=container/nginx/docker-compose.yml:container/mysql/docker-compose.yml:container/redis/docker-compose.yml# mysql configMYSQL_ROOT_PASSWORD=123456MYSQL_DATABASE=demo# redis configREDIS_PASSWORD=123456# 自定义环境变量 本地服务器 IPSITE_IP=host.docker.internal # host.docker.internal需要18.03以上版本 以nginx的 docker-compose.yml 文件为例: ${SITE_IP}将被替换成host.docker.internal, $${SITE_IP}将不会被替换version: “3"services: nginx: image: nginx volumes: - ./conf/dev.template:/etc/nginx/conf.d/dev.template ports: - “80:80” environment: - SITE_IP=${SITE_IP} command: /bin/bash -c “envsubst ‘$${SITE_IP}’< /etc/nginx/conf.d/dev.template > /etc/nginx/conf.d/dev.conf && exec nginx -g ‘daemon off;’” networks: - default - network_sitenetworks: network_site: driver: bridge其他镜像的配置可以从dockerhub查看redis、mysql启动全部// dev模式docker-compose up// prod模式,使用 prod下的.env文件cd ./prod && docker-compose up单独启动docker-compose up nginxdocker-compose up mysqldocker-compose up redis停止# 停止某个服务docker-compose stop nginx # 停止全部docker-compose stop具体配置请从github仓库查看通过使用docker,我们只需要一个repository存放配置, 便可以在多台电脑上迅速安装环境.