资讯专栏INFORMATION COLUMN

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

whatsns / 3010人阅读

摘要:工欲善其事必先利其器开始进行开发之前,都需要搭建好基本的开发环境个人用到的有搭建环境不同的方式使用一个个安装脚本一键安装包源码编译上面的解决方案都有一个共同的缺点一旦系统重装,需要重新安装配置有多台电脑时,开发环境版本容易不一致没有版本控制

工欲善其事必先利其器

开始进行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: 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、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存放配置, 便可以在多台电脑上迅速安装环境.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27684.html

相关文章

  • 有助于机器学习7个云计算服务

    摘要:用于机器学习人工智能数据分析的基于云计算的工具日前增多。亚马逊公司创建了,以简化使用其机器学习工具的工作。用于机器学习、人工智能、数据分析的基于云计算的工具日前增多。其中的一些应用是在基于云计算的文档编辑和电子邮件,技术人员可以通过各种设备登录中央存储库,并在远程位置,甚至在路上或海滩上进行工作。云计算可以处理文件备份和同步,简化工作流程。数据分析是很多组织在云计算平台进行的一项主要计算工作...

    stonezhu 评论0 收藏0
  • 这或许是东半球讲十大排序算法最好一篇文章

    摘要:希尔排序希尔排序这个名字,来源于它的发明者希尔,也称作缩小增量排序,是插入排序的一种更高效的改进版本。我们可以发现,当区间为的时候,它使用的排序方式就是插入排序。 冒泡排序 冒泡排序无疑是最为出名的排序算法之一,从序列的一端开始往另一端冒泡(你可以从左往右冒泡,也可以从右往左冒泡,看心情),依次比较相邻的两个数的大小(到底是比大还是比小也看你心情)。 showImg(https://s...

    wind3110991 评论0 收藏0
  • 目前国内流行三种PHP框架,你都知道吗?

    摘要:是编程里面非常流行的语言,到现在为止,已经诞生了几十种框架,但是在国内以下三个框架使用率才是最高的。跨站请求伪造是一种常见的攻击手段,但是有了可以将这种攻击抛之门外。 php是WEB编程里面非常流行的语言,到现在为止,已经诞生了几十种PHP框架,但是在国内以下三个框架使用率才是最高的。ThinkPHP showImg(https://segmentfault.com/img/bVL1s...

    kidsamong 评论0 收藏0
  • 35岁,一个团队leader,从工作满8年公司离职,选择重新尝试新机会,或许35岁才是起点。

    摘要:面试从开始准备到一直到年月份,面试现在这家公司,大概经历了年半的时间。后边也证明自己选择是对的。,,,,等也是测试必备的工具技能,这些虽然不是很难,但也是常用必备的技能。 ...

    SoapEye 评论0 收藏0
  • 外企产品开发是怎样

    摘要:从公司层面讲,也不能以产品进行团队划分,比如腾讯,可以用一个游戏划分一个团队,但是在,除了大产品模块的划分比如桌面端产品,端产品,其他业务产品,其实没有具体的产品团队,更多的是开发团队,而开发团队内部才划分到具体的产品线上。 从大学开始接触Web开发,到现在已经是第9个年头了,但是感觉自己才刚刚开始入门。特别是开发模式(这个称法待议),不同的公司不一样,团队结构,团队合作方式都有很大的...

    Soarkey 评论0 收藏0

发表评论

0条评论

whatsns

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<