还为重复安装开发环境而烦吗? 这或许是更好的解决方案 —— docker

工欲善其事必先利其器

开始进行web开发以前,都须要搭建好基本的开发环境. 我的用到的有nginx、redis、mysql、node.js.node

搭建环境不一样的方式mysql

  • 使用apt(ubuntu)、brew(mac os)一个个安装
  • 脚本: LNMP一键安装包
  • 源码编译 上面的解决方案都有一个共同的缺点
  • 一旦系统重装,须要从新安装、配置(有多台电脑时,开发环境版本容易不一致)
  • 没有版本控制系统,软件配置维护麻烦

更好的解决方案 —— docker

基于 docker(18.03以上)搭建nginxredismysql 服务。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}将被替换成host.docker.internal,${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

相关文章
相关标签/搜索