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了。

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

相关推荐
codelang1 小时前
Cline + MCP 开发实战
前端·后端
风象南2 小时前
SpringBoot中6种自定义starter开发方法
java·spring boot·后端
Asthenia041211 小时前
Spring AOP 和 Aware:在Bean实例化后-调用BeanPostProcessor开始工作!在初始化方法执行之前!
后端
Asthenia041212 小时前
什么是消除直接左递归 - 编译原理解析
后端
Asthenia041212 小时前
什么是自上而下分析 - 编译原理剖析
后端
Asthenia041213 小时前
什么是语法分析 - 编译原理基础
后端
Asthenia041213 小时前
理解词法分析与LEX:编译器的守门人
后端
uhakadotcom13 小时前
视频直播与视频点播:基础知识与应用场景
后端·面试·架构
Asthenia041214 小时前
Spring扩展点与工具类获取容器Bean-基于ApplicationContextAware实现非IOC容器中调用IOC的Bean
后端