「Docker」- 将代码放入容器中 @20210305

目前,在容器中使用代码有以下几种方式:

	容器启动时:RUN git clone ...
	镜像构建时:COPY . /whatever
	容器运行时:docker run -v $(pwd):/whatever/

那到底应该使用那种???

目标,这几种方式的优劣:

	#「[[https://forums.docker.com/t/best-practices-for-getting-code-into-a-container-git-clone-vs-copy-vs-data-container/4077|Best practices for getting code into a container (git clone vs. copy vs. data container)]]」
	说了半天,大家都是从使用场景出发的。场景不同问题不同。
	#「[[https://vsupalov.com/docker-mount-or-add-code-for-production-deploy/|Do I HAVE to ADD my Code Into the Docker Image When Deploying?]]」
	将代码打包到镜像里具有一些优势。
	只有部署工作流是正确的,那挂载代码才是可接受的。
	#「[[https://www.reddit.com/r/docker/comments/82ln02/best_practices_for_getting_code_into_a_container/|Best practices for getting code into a container]]」
	生产COPY,开发MOUNT,以及一些相关的场景。
	##「[[https://hackernoon.com/how-to-move-code-into-a-docker-container-ab28edcc2901|How to Move Code into a Docker Container]]」
	生产COPY,开发MOUNT

最终结论

#1 生产环境(复制代码到容器)

在构建时,将代码放入容器中:

	(1)启动速度块;
	(2)一次构建,到处运行;(一致性、可移植)
	(3)可快速回滚(快速切换到上一版本的镜像)

#2 开发环境(使用绑定挂载)

在进行本地开发时,将代码挂载到容器中:

	(1)便于调试。日志文件可以写入绑定挂载的目录中。
	(2)立即生效。将代码绑定挂载到容器中,修改后可以立即生效;

「绑定挂载」带来的问题:

	(1)容器中的进程可以修改、删除主机中绑定挂载的文件。功能强大,但是也存在安全隐患。
	(2)绑定挂载暴露文件到容器,降低了容器的安全和隔离。

相关文章

「Docker」- 获取帮助和改进

要将非Docker环境的项目放入Docker容器运行,通常需要通过创建Dockerfile来构建一个新的镜像,然后基于这个镜像运行容器。以下是基本步骤: 1. **编写Dockerfile**:在项目根目录下创建一个名为Dockerfile的文件,没有文件扩展名。在这个文件,你需要指定基础镜像,并添加构建镜像所需的指令,比如复制项目代码到镜像,安装依赖,设置环境变量,执行构建命令等。 2. **构建镜像**:打开命令行工具,切换到包含Dockerfile的目录下,使用`docker build`命令构建镜像。可以指定一个标签名来标识这个镜像。 ```sh docker build -t myproject . ``` 这里`myproject`是构建出来的镜像名称,`.`表示当前目录(Dockerfile所在目录)。 3. **运行容器**:构建好镜像后,使用`docker run`命令基于该镜像运行容器。 ```sh docker run -d --name mycontainer myproject ``` 这里`-d`表示后台运行容器,`--name`后跟容器名称,`myproject`是之前构建的镜像名称。 4. **映射端口**(如果需要):如果项目需要从外部访问,可能需要映射端口到容器内部。 ```sh docker run -d --name mycontainer -p 8080:8080 myproject ``` 这里`-p 8080:8080`表示将宿主机的8080端口映射到容器的8080端口。 5. **挂载卷**(如果需要):如果需要持久化数据或共享数据,可以挂载卷到容器。 ```sh docker run -d --name mycontainer -v /path/on/host:/path/in/container myproject ``` 这里`-v /path/on/host:/path/in/container`表示将宿主机的路径挂载到容器内指定路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值