如何为您的项目设置持续部署:个人经验



为您翻译了Julius Minmo撰写的有关为项目设置持续部署的文章 。 自动化节省了大量时间和精力。 本文将主要对新手程序员有用。

持续部署是一件好事。 一旦我们提交了项目,然后一切都在自动模式下进行,监视此过程就非常令人着迷。 在本文中,我将展示如何配置家庭项目的所有内容。

我们提醒您: 对于所有“哈勃”读者来说,使用“哈勃”促销代码注册任何Skillbox课程时均可享受10,000卢布的折扣。

Skillbox建议: 前端开发人员职业在线课程。
因此,对于初学者来说,让我们看一下解释持续交付和持续部署之间的区别的图表。



对于家庭项目,我们选择“持续部署”,因为除了您(该项目)您与之一起工作之外,没有人依赖它。 好吧,由于在大多数情况下您都希望立即部署更改,因此选择是显而易见的。 如果以后要更改该过程,则可以随时进行。

您将学到以下内容:

  • 如何制作dockerfile
  • 如何将项目上传到GitHub。
  • 如何在Docker Hub上自动构建Docker映像
  • 如何自动从守望台下载并运行图像。

需要什么:

  • 对Docker和Dockerfile的基本了解。
  • 已安装Git。
  • 在<a href='https://hub.docker.com/"> Docker Hub上的帐户

运行Docker的服务器(物理或虚拟)。

这是我正在使用的GitHubDocker Hub 存储库

为什么要使用Docker?


这样就可以将相同的环境用于不同的进程,从而消除了Heisenbags的外观以及“仅在我的机器上有效”的问题。 容器是隔离的,从网络安全的角度来看这是好的。 还有更多优势,但我认为这两个是主要优势。

配置Dockerfile

首先,我们需要该项目的Dockerfile。 此文件始终以这种方式调用,没有扩展名。 它始终位于项目的主目录中。

它以FROM语句开头,该语句告诉Docker我们从哪个基础映像开始。 您可以用绘画来类比。 我们可以将这张图片想象成一个带有背景画和成分缺失的主要画布(您的程序)的成品画布。

接下来,使用COPY ...命令将项目文件复制到容器中

它允许您从初始位置到当前位置(当然是在容器内)拾取文件。

接下来,您需要安装依赖项,为此,我使用Python PIP。 要记住的主要事情是使用RUN在容器中运行命令。

从python:3.7
复制..
RUN pip install -r requirements.txt

很简单,对吧? 现在,您可以在容器中运行该程序。

CMD [“ python”,“ ./my_script.py”]

至此,您已经完成了Dockerfile,可以手动创建映像和容器。 现在,跳过这一刻。

现在,让我们在GitHub中创建一个存储库,但是请记住,无需触摸“使用README初始化此存储库”这一行。



现在复制URL。



打开项目根目录的cmd / shell。 现在,您需要初始化存储库,添加文件,配置远程模式,提交文件并将项目发送到GitHub。

git init git add * git remote add origin https://github.com/<user>/<repository>.git git commit -a -m "Make Dockerfile ready for CD" git push -u origin master 

如果一切正常,则GitHub存储库将如下所示:



我们已经成功了一半!

现在,您需要将GitHub连接到Docker Hub。 为此,请转到您的帐户设置。



向下滚动并连接。



现在在Docker Hub中创建存储库。



为您的仓库命名,然后单击GitHub或Bitbucket图标。 然后,我们选择组织(通常是您的昵称)和项目的名称。 如果需要,可以更改设置。



好了,现在是最后一步-在这里,我们需要目标计算机上的守望台。 这是一个程序,可让您自动执行该过程。 如果出现更新,则Watch望塔将删除原始容器,并使用相同的设置从新映像中创建一个容器。

好消息是您可以在Docker上安装Watchtower,为此您需要在终端中输入以下命令:

 docker run -d --name watchtower -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower 

现在,我们为我们的项目启动容器!

 docker run -d --name <my-project> <username>/<my-project> 

-d允许程序在后台运行,因此如果关闭终端,则不会关闭。

最后,如果将提交发送到GitHub存储库,则Docker Hub将自动创建Docker映像。 然后,守望台将与他互动。

至于测试,您可以使用Travis CI。 您可以在此处阅读有关内容 ,但最重要的是,您将另一个文件添加到存储库中,该文件包含有关用于执行单元测试的外部服务器的指令或任何其他指令。

Skillbox建议:

Source: https://habr.com/ru/post/zh-CN439632/


All Articles