开始进行web开发以前,都须要搭建好基本的开发环境.
我的用到的有nginx、redis、mysql、node.js.node
搭建环境不一样的方式mysql
上面的解决方案都有一个共同的缺点nginx
基于 docker(18.03以上)搭建nginx、 redis 、mysql 服务。git
. ├── .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的环境变量 └── .env
docker-compose 在运行时会使用当前目录下的.env文件,
而且不支持指定env文件,因此须要多个不一样环境时,只能在对应文件夹下创建.env文件github
经过.env文件配置整个项目所须要的环境变量web
# 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 config MYSQL_ROOT_PASSWORD=123456 MYSQL_DATABASE=demo # redis config REDIS_PASSWORD=123456 # 自定义环境变量 本地服务器 IP SITE_IP=host.docker.internal # host.docker.internal须要18.03以上版本
以nginx的 docker-compose.yml 文件为例:
${SITE_IP}将被替换成host.docker.internal, $${SITE_IP}将不会被替换redis
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_site networks: network_site: driver: bridge
其余镜像的配置能够从dockerhub查看redis、mysqlsql
// dev模式 docker-compose up // prod模式,使用 prod下的.env文件 cd ./prod && docker-compose up
docker-compose up nginx docker-compose up mysql docker-compose up redis
# 中止某个服务 docker-compose stop nginx # 中止所有 docker-compose stop
具体配置请从github仓库查看
经过使用docker,咱们只须要一个repository存放配置, 即可以在多台电脑上迅速安装环境.docker