前端CI/CD 不得不说的 Docker

简介: 前言大家印象中的 docker 应该是运维同学比较关心或者擅长的工具,事实也的确如此。但是在前端过程越来越复杂,甚至前端早就在中台 node 占据一席之地的现在,docker 也越来越多地出现在前端领域。本篇文章站在前端开发者的角度来看 docker,介绍其基本概念及使用,希望通过阅读可以让大家对 docker 有个基础认识。

前言

大家印象中的 docker 应该是运维同学比较关心或者擅长的工具,事实也的确如此。但是在前端过程越来越复杂,甚至前端早就在中台 node 占据一席之地的现在,docker 也越来越多地出现在前端领域。

本篇文章站在前端开发者的角度来看 docker,介绍其基本概念及使用,希望通过阅读可以让大家对 docker 有个基础认识。


docker


在谈 docker 之前,我们先回想下搭建服务的过程,无论是搭建后端服务,还是爬虫等,我们首先得在本机上配置语言相关的环境,如编译器,变量环境等等,有时候还得下载对应的数据库。反正就是需要一系列的环境准备,经常配置个老半天的还可能被某个步骤卡住了。

在本机开发完成,需要部署线上环境的时候,往往又得跑一遍相同环境配置,因为计算机环境不同,配置也并不会一帆风顺。明明在我本机上这样可行的,但是在他人机器上却不行了。

所以 docker 的出现就是为了解决服务迁移过程中的这种不确定性,既然环境不同会引起一系列差异问题出现,那我干脆连环境一起迁移好了。

类似于虚拟机,docker 也是提供一份隔离环境,叫做容器。但是相比于虚拟机而已,它却非常的节约资源,高效。

2.png


docker 相关的概念

docker

在我的理解,docker 提供的是一份引擎、工具,安装的时候也会提供可视化的桌面应用,实际上这不是必须的。

安装(macOS)

brew install docker


安装后验证是否成功

docker -v


镜像 Image


镜像是指 (服务 + 环境)的集合,也可以比作语言中的类,比如在将本机配置好的环境和服务打包成镜像,有了镜像,别人就可以生产一模一样的环境和服务,不需要再处理计算机环境的差异。

以 niginx 为例

查找镜像

docker search nginx


下载镜像(很像克隆git仓库或者npm下载包)

docker pull nginx:latest
复制代码

查看镜像列表

docker image ls
复制代码

删除镜像(imageId在镜像列表中可以查到)

docker image <imageId>


容器 Container

3.png

容器可以理解为运行镜像后生成的整个环境,可以比作语言中的实例。我们通过生成容器将镜像实例化,以后对服务或者环境的相关操作其实就是在容器中进行的,更改的是容器相关的配置或者数据。

生成容器,

docker run -d -p 8080:80 nginx

相关参数含义

  • d 后台运行
  • p 端口映射 <计算机>:<容器> 即将对主机 8080 的访问 映射到对容器 80 端口的访问
  • nginx 镜像

查看容器列表

docker container ls
复制代码

删除容器(containerId在镜像列表中可以查到)

docker container rm <containerId>
复制代码

启动 停止 重启

docker start|stop|restart <containerId>


仓库

类似 npm 包的仓库,docker 官方也会提供热门的服务镜像在上面。比较简单,就不多说。

docker search <image>
复制代码
docker pull <image>


举个🌰


我们来试试怎么启动个 nginx 服务

先查找仓库中有没有对应的镜像

docker search nginx
复制代码

下载镜像

docker pull nginx
复制代码

生成并启动容器

docker run -d -p 8080:80 nginx
复制代码

打开 http://localhost:8080 查看成功页面

更改配置


方式一


我们可以通过复制命令来更改容器配置

先从容器内复制到容器外面

docker cp <containerId>:/etc/nginx/nginx.conf <localpath>/nginx.conf
复制代码

再从容器外面复制到容器里面

docker cp <localpath>/nginx.conf <containerId>:/etc/nginx/nginx.conf
复制代码

重启容器

docker restart <containerid>


方式2

也可以进入容器直接修改配置文件

进入容器

docker exec -it <containerId> bash 
复制代码
  • i 交互式
  • t 终端

下载 vim

apt-get update
apt-get install vim
复制代码

修改文件

vim etc/nginx/nginx.conf


其他

实际还有一些重要的概念没有讲到

Dockerfile

自定义镜像的配置文件,类似 package.json,可以在其他镜像的基础上进一步配置我们的自定义镜像。

docker build <imagename>
复制代码

Docker Compose

用于组合不同镜像,例如你需要同时使用后端服务和数据库镜像,一起配置使用

现在安装 docker 的时候会自动安装 Compose

docker-compose -v
复制代码

通过 docker-compose.yml 定义组合,例如

version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
  redis:
    image: "redis:alpine"
复制代码

运行

docker-compose up



结语

docker 的使用实际上非常方便,主要在不同的计算机下载好了 docker,就可以很方便地迁移服务等。对于运维来说如果可以放在 docker 中的服务,意味着可以实现一次配置,到处使用。前端工程化及中台相关的服务也可以通过 docker 来进行搭建。



相关文章
|
6月前
|
前端开发 jenkins 持续交付
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
新的centos7.9安装docker版本的jenkins2.436.1最新版本-前端项目发布(五)
169 1
|
1月前
|
敏捷开发 前端开发 Devops
前端研发链路之 CI/CD
本文首发于微信公众号“前端徐徐”,作者徐徐介绍了前端研发链路中的CI/CD。文章从CI/CD的背景、意义、运作方式及常用工具等方面进行了详细探讨,帮助读者理解如何在前端开发中有效应用CI/CD,提升开发效率和产品质量。
36 1
前端研发链路之 CI/CD
|
25天前
|
jenkins 测试技术 持续交付
Docker最佳实践:构建高效的CI/CD流水线
【10月更文挑战第17天】在现代软件开发实践中,持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)已成为提高开发效率和软件质量的重要手段。Docker作为一种容器技术,为构建一致且隔离的开发环境提供了强有力的支撑。本文将探讨如何利用Docker来优化CI/CD流程,包括构建环境的标准化、镜像管理以及与CI/CD工具(如Jenkins、GitLab CI)的集成。
47 5
|
1月前
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
33 5
|
2月前
|
前端开发 应用服务中间件 nginx
docker部署本地前端项目思路
docker部署本地前端项目思路
40 7
|
29天前
|
JavaScript 前端开发 Docker
拿下奇怪的前端报错(二):nvm不可用报错`GLIBC_2.27‘‘GLIBCXX_3.4.20‘not Found?+ 使用docker构建多个前端项目实践
本文介绍了在多版本Node.js环境中使用nvm进行版本管理和遇到的问题,以及通过Docker化构建流程来解决兼容性问题的方法。文中详细描述了构建Docker镜像、启动临时容器复制构建产物的具体步骤,有效解决了不同项目对Node.js版本的不同需求。
|
3月前
|
jenkins Shell 持续交付
自动化部署:使用Jenkins和Docker实现CI/CD
【8月更文挑战第31天】 本文旨在引导读者了解如何通过Jenkins和Docker来实现持续集成和持续部署(CI/CD),从而优化开发流程,提升工作效率。文章将详细介绍配置Jenkins服务器、创建Docker镜像以及设置自动化构建和部署的步骤。通过实际操作案例,我们将展示如何将代码变更快速部署到测试或生产环境,确保软件质量与发布速度的双重保障。
|
3月前
|
测试技术 持续交付 开发者
使用Docker构建CI/CD流程:从理论到实践
【8月更文挑战第2天】使用Docker构建CI/CD流程,可以显著提高软件开发的效率和质量。通过容器化技术,开发者可以确保环境的一致性,快速部署和测试应用,并减少人为错误。结合合适的CI/CD工具和最佳实践,可以进一步加速软件交付过程,提高用户满意度。希望本文能为开发者在构建基于Docker的CI/CD流程时提供有价值的参考。
|
4月前
|
Kubernetes Cloud Native 持续交付
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
|
4月前
|
前端开发 Docker 容器
前端 CSS 经典:mac docker 效果
前端 CSS 经典:mac docker 效果
50 0