docker 解决项目环境问题

背景

在很多时候我们都会为项目的环境开发而苦恼不已,比如说我们在接受到一个ruby项目时,首先你想的当前这个项目怎么运行起来,只有当项目运行起来后,你才能正常的看到你写的代码,才知道你又写了多少个bug吗!然后其需要使用的相关工具也是有很多的,大概有一些redis、mysql、mq、ElasticSearch等一些工具,那么其项目对其要求的相关的工具要求的版本不一致的话,有可能你就需要重新安装相关工具,如果能简单方便快捷顺利的安装相关工具对应的版本的话,那还是很好的,基本影响就很小,如果不能了,在其中出现一些问题,而且关于一些你很难找到解决方法的问题,那么这种情况就会导致很影响你的开发进度很开发节奏。所以在这个时候我们如果有一个统一的环境,并且能快速的安装并且使用的话,那么就会大大的加快的你开发节奏,以及减少你懵逼的状态。

简介

2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。

他们主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。(LXC,就是Linux容器虚拟技术)

后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker。

其实docker 有两句口号,感觉能非常好的阐述它的作用,分别是:“Build, Ship and Run”(搭建、发送、运行)、“Build once,Run anywhere”(搭建一次,到处能用)

Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易

就在这个时候,K8S出现了。

K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。

它的前身,是Google自己捣鼓了十多年的Borg系统。

实现过程

那么运行一个简单的ruby项目你需要什么了?当时是一个ruby这个语言解释器了。

那么接下来看看怎么安装使用docker吧!

首先安装docker,官网下载安装链接

下载后直接进行包的安装。

 

在你安装好后在终端中执行docker version会显示对应版本信息的。

 

接下来我们来时使用时docker 安装对应ruby版本。

其实在安装之前大家可以了解一下hub.docker.com这个网址,这个上面有大量的docker镜像包,而且你还可以发布自己的专属镜像。

比如说我这里下载一个ruby的镜像,ruby大家使用的比较多,官方开发团队也做了一个专门的docker镜像源。

 

我这就直接下载最新的ruby镜像了。运行:docker pull ruby

 

当你下载完之后可以执行:docker images查看你当前安装好的镜像

 

 

当然不要认为这个时候已经可以使用你下载的ruby版本了。docker使用容器化工具吗!他最小颗粒就是得到一个可使用的容器了。

docker run --name ruby2.6.7 -itd -p 3000:3000 -v /Users/rcc/Desktop/work/project:/opt ruby:2.6.7
-i: 交互式操作。
-t: 终端。
-d: 指定容器的运行模式,默认是不进入容器。
--name:指定生成容器的名称。
-p: 指定容器映射的端口
-v: 指定容器映射的文件夹
ruby:2.6.7 :使用的镜像

当你生成好自己容器后,可以执行:docker ps 查看正在运行的容器

 

然后我们可以进入容器进行相关的操作。

docker exec -it ruby3.2.0 /bin/sh
exec:当退出容器不会关闭容器
ruby3.2.0:容器名称
/bin/bash:执行终端指令的解释器

最后你就会发现你进入容器了。

 

关于整个一个完整项目需要的工具有:pg数据库、mysql数据库、ruby环境、redis等一些的东西。在了解了安装后可以组装多个工具后然形成一个完整的项目。其中在使用的时候你只需要注意端口与文件夹的映射就好了。

 

当没有你需要的镜像时。可以选择构建自己的系统

FROM debian:10


ENV TZ Asia/Shanghai
ENV DEBIAN_FRONTEND noninteractive
ENV PATH /pdf-converter/bin:/usr/local/go/bin:$PATH
ENV GO111MODULE on
ENV GOPROXY https://goproxy.cn

RUN apt update \
    && apt install -y wget ghostscript \
    && ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime \
    && echo ${TZ} > /etc/timezone

# 转图片的工具包:包含 pdfinfo、pdftoppm 等
RUN apt-get -y install poppler-utils

RUN wget -P /tmp https://dl.google.com/go/go1.16.linux-amd64.tar.gz
RUN tar -C /usr/local -xzf /tmp/go1.16.linux-amd64.tar.gz
RUN rm /tmp/go1.16.linux-amd64.tar.gz

WORKDIR /pdf-converter
RUN mkdir -p "/pdf-converter/src" "/pdf-converter/bin" && chmod -R 777 "/pdf-converter"
RUN wget -P /usr/share/fonts/truetype/dejavu/ -i /pdf-converter/fonts/fileurl.txt

COPY . .
RUN go mod tidy

其实docker 这种单机的使用是能有效的解决你在更换电脑,更换系统时出现环境不兼容等问题的快速解决方案。

他会使你在开发时,不用浪费大量的时间成本在环境安装上面的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值