開始進行web開發以前,都須要搭建好基本的開發環境. 我的用到的有nginx、redis、mysql、node.js.node
搭建環境不一樣的方式mysql
基於 docker(18.03以上)搭建nginx、 redis 、mysql 服務。nginx
.
├── .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文件git
經過.env文件配置整個項目所須要的環境變量github
# 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}將不會被替換web
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、mysqlredis
// 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存放配置, 即可以在多臺電腦上迅速安裝環境.sql