工欲善其事必先利其器

开始进行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的环境变量└── .env

docker-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 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}将不会被替换

version: "3"
services:nginx:image: nginxvolumes:- ./conf/dev.template:/etc/nginx/conf.d/dev.templateports:- "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、mysql

启动全部

// 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相关推荐

  1. 安装Sarge(六) 安装开发环境

    本来写到这份上就差不多了,可是朋友们说都写到这份上了,干脆把开发环境的安装也写写吧!(晕,好象"都到这份上了"这句话,最近常常被他们拿来用 呀!)没办法,谁叫我交友不慎呢,那就写吧 ...

  2. 从0到一开发微信小程序(1)——申请账号并安装开发环境

    文章目录 其他相关文章 1.什么是微信小程序? 2.如何申请? 3.开发工具下载 其他相关文章 从0到一开发微信小程序(1)--申请账号并安装开发环境 从0到一开发微信小程序(2)--开发第一个小程序 ...

  3. (笔记)java安装开发环境教程

    (笔记)安装开发环境 安装jdk 百度搜索jdk,找到下载地址 下载电脑对应的版本 双击安装JDK 记住安装的路径 配置环境变量 我的电脑>右键>属性 点击 高级系统设置 点击 环境变量 ...

  4. 踏足Flutter 安装开发环境

    学习Flutter 首先安装开发环境 第一步 下载 Flutter中文网地址:https://flutterchina.club/get-started/install/ 配置新的环境变量 PUB_H ...

  5. 金蝶实习(十)——安装开发环境

    今天是实习的第十天了,现在才把开发环境搭建好,有点惭愧.不过,谁让咱电脑配置不够呢!前天升完级后,昨天考试也没去体验升完级后的感觉.应该说不抱有太大的希望吧,毕竟咱电脑还是单核,虽然现在内存1个多G, ...

  6. Android9编程一:安装开发环境

    为什么80%的码农都做不了架构师?>>>    本教程从-1开始: 什么? 你们的教程都从0开始? 起点太高了!明摆着不想让人看懂!我们从-1开始. 一.配置Android开发环境 ...

  7. Android之安装开发环境

    在如下网址下载开发环境 https://developer.android.google.cn/studio/ 默认安装即可... 安装完之后,打开ide 就会出现如下 点击cancel 点击下一步: ...

  8. FPGA:从0开始(安装开发环境)加破解

    题目概述: 安装FPGA开发环境Vivado2019.2 过程步骤: 将压缩包解压出来(注意,解压目录的路径名称只能够包含字母.数字.下划线,否则安装程序有可能出问题),双击解压出来的文件夹下的&qu ...

  9. Linux第二篇【系统环境、常用命令、SSH连接、安装开发环境】

    系统环境 我们知道Windows的出色就在于它的图形界面那一块,而Linux对图形界面的支持并不是那么友好-其实我们在Windows下对图形界面进行的操作都是得装换成命令的方式的! 当然了,我们在Ub ...

最新文章

  1. matlab7 mat,matlab7.0里生成的mat文件为什么用matlab6.5打不开呢?
  2. aliyun maven 添加jar_gradle添加阿里云maven库
  3. comsol移动网格_将动网格模型迁移到 5.3a
  4. 【Java】线程通信的例子:用两个线程打印 1-100;生产者消费者问题
  5. 缩放浏览器时 背景图片固定
  6. P3243 [HNOI2015]菜肴制作(拓扑 + 优先队列)
  7. 联想拯救者电竞手机Pro透明版马上就到:一眼就能看到“芯”
  8. MATLAB 添加自有的工具包
  9. java多线程编程(三)- 线程的创建
  10. 人工智能的发展_人工智能发展带来的机遇
  11. 《Redis视频教程》(p1)
  12. 杭州五大湖风景名胜区
  13. vi 和 vim 编辑器的使用
  14. Math三点共线判断
  15. 谷歌、甲骨文史诗级版权诉讼案,10 年 API 之争本周开审
  16. 使用函数创建多个备选BOM
  17. 云技术入门指导:什么是云计算技术,云技术用什么语言开发
  18. Redis的key为什么中间要用冒号隔开
  19. 狂神说,mybatis-01 java.lang.ExceptionInInitializerError at com.kuang.dao.UserDaoTest.selectUser(UserD
  20. 东华大学计算机年薪,东华大学毕业生薪酬高吗?东华大学什么专业工资高 毕业生就业率...

热门文章

  1. Hystrix入门与分析(一):初识Hystrix
  2. Java BigDecimal 数据类型的运算
  3. 正则,bs4 ,xpath 和jsonpath 的匹配规则
  4. libstdc和glibc的一些共享库问题
  5. [bzoj4763]雪辉[bzoj4812][Ynoi2017]由乃打扑克
  6. item 12: 把重写函数声明为“override”的
  7. apk反汇编之smali语法
  8. 用shell求两个文件的差集
  9. java的字符串复制_我应该如何复制Java中的字符串?
  10. 985计算机只考数据结构,初试只考数据结构的985院校