`
haiouc
  • 浏览: 118875 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

代码放在Docker里面 or 外面

阅读更多

首先需要明确的是:Docker到底能够带来什么样的好处,Docker带来轻量级虚拟化容器方面的优势(资源利用率高,创建快捷,环境纯粹) ?   还是镜像带来的优势(便于部署,记录容器状态,持续集成等)  确定了使用的场景,才好说明代码到底放到什么地方更合适。

 

举几个例子,可以根据场景灵活的方式使用代码和数据:

 

场景一:如果做好了所有代码,想分发给其他使用者,这种无疑代码放到image是最佳的,包括数据库初始化脚本等。

 

场景二:如果是开发环境,代码是用于调试,代码不应该在image里面,代码最好是在本机电脑上,如MacOS,Windows,Linux的个人PC上,那么就通过volume方式进行挂载是最方便的,修改代码直接就可以进行调试。如果开发环境在服务器上,可以通过远程mount的方式,mount到本机进行开发修改。

 

场景三:如果是测试环境,建议使用git方式,代码不在image中,通过docker exec到容器内pull对应测试tag的代码。当然也可以在宿主机pull,然后docker cp到对应的测试容器。

 

没有哪种最优,只有最适合的。

 

===========================

docker部署两种情形:

1)开发环境
由于开发环境代码一直在变动,而且多人通过git协作,于是代码都是放在外面,构建一个运行环境的image,然后代码部分用volume映射进去,方便随时调整。

2)生成环境
我们的生产环境比较独特,一般都是给客户安装成品而不是自己的服务器,一方面为了保护代码,另一方面是减少不必要的麻烦,于是就把代码都构建在image里面,这样直接在客户那边把镜像运行起来就行,只是个下载的时间,也不需要其他操作。

 

在自己的服务器上,由于基本是内部演示之类,所以完全就是当做开发环境来对待的,参见第一条。

Docker嘛,既然可以虚拟环境,那么怎么合适怎么用吧,目的就是开发的时候启动的快+重新构建快,给客户安装的时候要尽可能的简单。

===========================

 

1) 镜像相当于模板,开发代码放镜像的话,减低镜像的复用性。

2) 代码放在image里管理是否会造成本地存储和网络传输上不必要的负担。

===========================

 

实用场景之一:

1、在开发环境,因为code的频繁变更,通过volume方式进行挂载方便。
2、代码提交到git repo后,通过jenkins打包编译,把编译后的代码包生成到docker image中,并打好对应的tag,上传到docker registy。之后进入测试环境进行部署,测试。
3、通过paas ci后的docker image就可以直接在生产环境进行部署了。

 

分享到:
评论

相关推荐

    python 代码操作 docker 命令

    python 操作docker 命令, docker命令操作,镜像查看,运行,删除,导出,加载等操作...

    springcloud与docker微服务架构实战配套代码

    springcloud与docker微服务架构实战配套代码springcloud与docker微服务架构实战配套代码springcloud与docker微服务架构实战配套代码springcloud与docker微服务架构实战配套代码springcloud与docker微服务架构实战...

    项目管理看板系统Taiga源代码涵盖Docker部署项目

    项目管理看板系统Taiga源代码涵盖Docker部署项目

    puppetlabs-image_build, 从 Puppet 代码生成 Docker 图像.zip

    puppetlabs-image_build, 从 Puppet 代码生成 Docker 图像 image_build 目录MODULE 描述- image_build MODULE 是什么,它做了什么? 设置使用image_build启动入门的基本步骤。用法- 如何使用 Puppet 构建 Docker ...

    本指南主要介绍如何在docker下部署LLAMA 2,附带命令代码和docker文件的编辑代码

    本指南主要介绍如何在docker下部署LLAMA 2,附带命令代码和docker文件的编辑代码

    docker入门 代码

    docker入门学习代码,使用Docker Hub官方gcc:latest镜像(1.2GB)编译C/C++程序,以及缩小镜像的方法。方法1:在gcc容器里编译C/C++程序 将C/C++代码运行在gcc容器内的最简单方法就是将gcc编译指令写入Dockerfile中...

    glot-containers, 用于运行代码的Docker 容器.zip

    glot-containers, 用于运行代码的Docker 容器 glot容器概述glot容器是 glot.io 使用的Docker 映像的集合,用于运行代码。 生成的图像可以在 Docker-Hub 找到。

    Docker-desktop 4.24.1.0 解决报错19044

    如果Windows安装docker的时候报错19044 or above,就使用这个版本

    centos7 docker CE入门及安装

    这个我亲手写的docker入门教程,适合入门者,欢迎下载。

    Docker:Docker源代码-docker source code

    Docker:Docker源代码

    Docker 手册(Docker Handbook).pdf

    这意味着用户可以了解如何从源代码构建Docker,进而深入理解Docker的工作原理。 网络管理是容器技术的重要组成部分。本手册提供了关于如何创建和管理Docker网络的步骤,包括使用docker network命令创建自定义网络。...

    Android代码-docker-fess

    To run this you will need docker and docker-compose. By default, Docker host ports 80 and 443 are required by the reverse proxy container. If this is an issue, change the port mappings in the docker-...

    Docker从入门到实战源代码文件

    《Docker从入门到实战》源代码文件 杨保华 戴王剑 曹亚仑 编著

    docker安装过程的gpg文件

    在Docker的安装过程中,GPG文件通常用来验证Docker仓库的软件包是否来自可信源,确保下载的Docker软件包未被篡改或包含恶意代码。 首先,我们来了解一下Docker的安装流程。在Linux系统中,Docker通常通过官方的仓库...

    docker&&nvidia-docker安装包

    上传到服务器上,解压安装包,解压完成进入nvidia-docker目录,在进入里面的docker目录,cd nvidia-docker/docker/ 直接执行里面的install.sh脚本即可; nvidia-docker部署步骤: 和上面描述的一样,先操作上面的...

    docker18.09 离线安装包

    安装docker 获取root 权限 su root 拷贝所有文件到 /opt/docker/ (如果没有 docker目录执行 mkdir -p /opt/docker) yum localinstall -y /opt/docker/*.rpm 安装docker-compose cd /opt/docker/ tar ...

    MySQL5.7docker离线包

    Docker 离线安装 MySQL 5.7 使用说明 本文将指导你如何使用离线的 Docker 镜像包 (docker-mysql-5.7.tar.zip) 来在 Linux 系统中安装并运行 MySQL 5.7 容器。 前提条件 • 已安装 Docker 环境。 • MySQL 5.7 ...

    Docker下部署LLAMA 2

    本指南主要介绍如何在docker下部署LLAMA 2,附带命令代码和docker文件的编辑代码

    centos7.6离线安装docker-ce-19.03、nvidia-docker2

    离线环境下,在centos7.6系统上安装docker-ce-19.03,nvidia-docker2.4版本,其中docker-ce-19.03在docker-local.tar压缩文件里面,nvidia-docker2在nvidia-docker2.zip文件中。 具体安装流程如下: 1.安装docker ...

Global site tag (gtag.js) - Google Analytics