docker 快速构建开发环境

我们知道docker,它能够将我们的开发环境打包成一个镜像,这样我们就可以在任何地方运行这个镜像,而不需要担心环境的问题,这对部署来说相当便利。

但是,在项目开发阶段,开发环境的搭建仍然是一件令人头疼的事,通常需要装各种各样的软件,配置各种环境变量,安装各种依赖等等。 那么docker是否能帮我解决这个问题呢?答案是肯定的。

我们可以通过docker一次构建好一个开发环境,在开发时启动一个开发环境的容器,让vscode连接这个容器开发就ok啦。

废话不多少,我们以python为例,演示一下如何构建一个python开发环境。

一、准备工作

假设您已对docker有了基本了解,自己已经安装好了docker,并且已经安装好了vscode。

在vscode中安装一个插件Dev Containers待用。

PS:如果您还不会docker,建议可以去看看我的 一小时快速上手docker文章。

搭建开发环境有两种方式:

  1. 没有开发环境镜像,编写devcontainer.json文件启动

  2. 已有开发环境的镜像(运行进行后,连接容器)

下面分别介绍

二、方式一:利用devcontainer.json文件启动

我们打卡vscode,在目录下创建一个.devcontainer目录,目录下创建一个devcontainer.json文件,内容如下:

json 复制代码
{

"image": "python:3.9-slim",

"customizations": {

"vscode": {

"extensions": ["ms-python.python"]

}

},

"mounts": [

"source=${localWorkspaceFolder},target=/workspace,type=bind"

]

}

解释一下:

  • image:指定基础镜像,这里我们使用python:3.9-slim,当然你也可以使用其他镜像,比如ubuntu:latest等等。

  • customizations:自定义配置,这里我们安装了ms-python.pythonvscode 插件,当然你也可以安装其他的插件。

  • mounts:挂载目录,这里我们将当前目录挂载到容器的/workspace目录下,这样我们就可以在容器中访问当前目录下的文件了。

好啦,上面就一个中心------构建一个python 3.9版本的开发环境 ,下面我们打卡vscode 的命令控制版,mac上是cmd+shift+p,windows上是ctrl+shift+p,输入Dev Containers: Reopen in Container,等运行完就正常进入了。

进入成功后大概这个样子。

PS:这里它会下载好python:3.9-slim镜像,并且启动一个容器,并且自动安装好我们指定的插件;第一次会比较慢。

现在我们来玩一下,在当前目录下创建一个app.py文件,内容如下:

python 复制代码
print("hello world")

然后在终端中运行python app.py,输出hello world,说明我们的开发环境已经搭建好了。

三、方式二:利用已有镜像启动

另外一种方式是我们实现构建好镜像,然后启动容器,连接容器进行开发。

为了演示,我就不去添加dockerfile了,直接使用官方的python镜像;

为了方便测试,我们close上面的容器连接。在终端运行如下命令:

shell 复制代码
docker run -d \

--name python-dev \

-v $(pwd):/workspace \

python:3.9-slim \

sleep infinity

这启动了一个名为python-dev的容器,并且将当前目录挂载到容器的/workspace目录下。

然后我们打开vscode,打开命令控制版,输入:Dev Containers: Attach to Running Container,然后选择python-dev容器,等运行完就正常进入了。

ok啦,可以自行测试下。

四、其它

如果我们本地电脑的资源有限,性能不好;这种方式也是支持远程电脑上运行docker容器连接的。

docker的这种便利性,为我们构建不同的开发环境提供了极大的便利性,只需要搞定docker的安装,其它就交给docker了。

有了这种方式再也不担心换电脑带来了环境配置的痛苦了,真的是一种幸福,您说是吧

相关推荐
盘古开天166613 小时前
从零开始:如何搭建你的第一个简单的Flask网站
后端·python·flask
用户214118326360213 小时前
Claude Skills 从零到一:手把手打造专属公众号文风生成器,10 分钟搞定 AI 技能定制
后端
追逐时光者14 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 60 期(2025年11.1-11.9)
后端·.net
码上成长14 小时前
GraphQL:让前端自己决定要什么数据
前端·后端·graphql
Lisonseekpan14 小时前
为什么国内禁用docker呢?
运维·docker·容器
码事漫谈15 小时前
C++双向链表删除操作:由浅入深完全指南
后端
码事漫谈15 小时前
软件生产的“高速公路网”:深入浅出理解CI/CD的核心流程
后端
Moonbit15 小时前
MGPIC 初赛提交倒计时 4 天!
后端·算法·编程语言
程序定小飞15 小时前
基于springboot的作业管理系统设计与实现
java·开发语言·spring boot·后端·spring
程序员小假16 小时前
我们来说一下 Mybatis 的缓存机制
java·后端