首页 > 其他分享 >IntelliJ Docker环境构建

IntelliJ Docker环境构建

时间:2023-07-20 09:44:13浏览次数:29  
标签:IntelliJ Python 创建 映像 构建 Docker Dockerfile

介绍,以 Python为例

 

 

自从我购买了一台新的Macbook之后,我不得不重新创建Python开发环境,但是如果我直接在本地安装Python,则会不小心在全球安装该软件包,或者即使我使用venv,也要重新创建该环境。就像我想要的时候麻烦一样,所以我决定使用Docker来构建它。

在IntelliJ上安装插件

如果IntelliJ中未包含Docker插件,请从Preferences > Plugins安装。

image.png

创建一个Python项目

接下来,启动IntelliJ并创建一个Python项目。
稍后将创建必要的Docker映像,因此暂时选择适当的Project SDK。 (这里是Python 2.7(venv))
除此之外,您可以保留默认设置并创建一个项目。

image.png

在IntelliJ上创建一个Dockerfile并构建映像

这次,我选择了项目名称PythonQiita。首先,我们需要使Python环境成为Docker映像,因此直接在项目文件夹下创建Dockerfile。 (该位置可以在任何地方)

image.png

在Dockerfile中,写入基本映像文件,初始设置命令等。
这次我们将使用python:3图像。将pandas numpy放入包装中。

image.png

 

 

右键单击创建的Dockerfile,然后从菜单中选择Create Dockerfile。

image.png

将显示

配置窗口,输入Image tag。我们稍后将使用此标签名称。在这里是python_qiita。
取消选中Run built image。如果启用此功能,它将在构建映像后作为容器启动。如果输入Container name,它将以该容器名称开头。

image.png

将通过启动从下面的image.png创建的Dockerfile设置来构建映像。通过在"部署日志"中显示'python_qiita Dockerfile: Dockerfile' has been deployed successfully.,您可以看到它已完成。

image.png

创建

图像后,该图像名称将显示在"服务"视图中,指示构建成功。

image.png

将生成的图像设置为Project SDK

构建Docker映像后,可以将其用作项目的SDK。请注意,该容器不是SDK。

打开

FIle > Project Structure,在Project项目中按New按钮,然后在弹出窗口中选择Python SDK。
image.png

将显示一个选择

Python解释器的窗口,在左侧菜单中选择Docker。然后,确认可以为映像名称选择您先前构建的Docker映像的标记名称,然后按OK(确定)按钮。

image.png

Remote Python 3.7.4 Docker...显示在项目结构的SDK项中,您可以看到Dockerfile中编写的软件包已安装在软件包中。在venv等环境中,您可以在此处添加/删除软件包,但不能在Python中为Docker映像添加/删除软件包。每次软件包配置更改时,您将需要重建映像。

image.png

Python执行和调试

此时,您要做的就是创建一个Python文件并照常执行它,但是...
完成设置后,似乎IntelliJ无法正确读取Python配置,因此您需要关闭并重新打开项目一次。另外,您将必须等待屏幕底部的更新指示符完成,如下所示。只有这里是困难。我不知道它是如何工作的,但我希望它会得到改善。

 

 

image.png

如果可能,可以在IntelliJ上完成Python代码的完成,执行和调试。以下是导入和执行熊猫的状态。
image.png

不方便

由于

环境可以使用Docker构建,因此它变得可移植,并且对于执行环境而言,能够轻松地重新创建它非常方便。另一方面,还有一些不便之处,因此我将其记录下来。

重建Docker映像需要很长时间才能加载配置

就像在设置上面的SDK之后立即一样,如果您重建映像并更改Python软件包的配置,则不会立即反映出来。您必须等待IntelliJ重新识别它(几分钟),例如通过重新启动项目。
当不再需要重新配置时,它不会打扰我,但是在项目的早期阶段这很烦人。

无法像Matplotlib

那样执行show()

显然,由于它是在Docker上执行的,因此无法启动类似show()的窗口。别无选择,只能放弃并将其保存在文件中进行检查。

概要

尽管引入了一些不便之处,但我发现环境干净且便于携带很方便。到现在为止,重建软件包的环境很麻烦,或者必须将其写入诸如requirements.txt之类的环境是在Dockerfile中组织的,并且如有必要,可以将映像保存在存储库中。 。
当被问及使用venv哪个更容易时,我认为它是venv,但是我认为最好在新环境中尝试各种操作,因此我将尝试Docker。

标签:IntelliJ,Python,创建,映像,构建,Docker,Dockerfile
From: https://www.cnblogs.com/zenghansen/p/17567469.html

相关文章

  • Docker CLI docker container prune 常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中......
  • Docker大会的新福利:LinuxKit 和 Moby 开源项目
    在一年一度的DockerCon大会上,来自全球各地的5000名参与者,济济一堂,于奥斯丁会议中心,共同见证Docker的发展,探讨容器技术的落地。 Docker创办人暨技术长SolomonHykes认为,今年容器将成为主流,将散布伺服器、资料中心、云端、桌面、IoT与行动等运算装置,或金融、医疗保键......
  • Docker大会的新福利:LinuxKit 和 Moby 开源项目
    在一年一度的DockerCon大会上,来自全球各地的5000名参与者,济济一堂,于奥斯丁会议中心,共同见证Docker的发展,探讨容器技术的落地。 Docker创办人暨技术长SolomonHykes认为,今年容器将成为主流,将散布伺服器、资料中心、云端、桌面、IoT与行动等运算装置,或金融、医疗保键......
  • Docker大会的新福利:LinuxKit 和 Moby 开源项目
    在一年一度的DockerCon大会上,来自全球各地的5000名参与者,济济一堂,于奥斯丁会议中心,共同见证Docker的发展,探讨容器技术的落地。 Docker创办人暨技术长SolomonHykes认为,今年容器将成为主流,将散布伺服器、资料中心、云端、桌面、IoT与行动等运算装置,或金融、医疗保键......
  • jacoco+ant 构建java覆盖率
    所需工具:JacocoAnt2020.5.26:踩坑报错Unabletodumpcoveragedata,经过查证修改后发现为tomcat需用tomcat自带startup.bat启动,用eclipse启动仿佛插件无效。 Tomcat修改setJAVA_OPTS="-javaagent:[yourPath/]jacocoagent.jar=includes=com.companyName.*,output=tcpserv......
  • docker+jacoco构建接口测试覆盖率
    代码中需要更改的内容Dockerfile1.在文件中引入jacocoagent.jar,引入后需检查是否引入成功ADD./jacocoagent.jar/jacocoagent.jar2.打开jacocoagent监控端口,不能与其他jacocoagent端口重复,此端口也是docker容器启动的必填项EXPOSE99263.加入jacocoagent启动参数,端口号......
  • 利用InnoStep在VS编译时自动构建安装包
    摘要很多同学在C/S开发领域或多或少都可能会遇到需要制作安装包的场景,打包的工具也是五花八门,例如有NSIS、InstallShield、WixToolset、ClickOnce等等,这里以InnoSetup为例简单演示下如何构建安装包,以及在VisualStudio中编译程序时自动去构建这个安装包。操作演示Tips:如果是......
  • Docker--了解及基础使用篇
    Docker--了解及基础使用篇Docker架构:Docker包括三个基本概念:镜像(Image):Docker镜像(Image),就相当于是一个root文件系统。比如官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统。容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对......
  • docker启用zabbix
    dockerrun--namezabbix-db-ePOSTGRES_USER=zabbix-ePOSTGRES_PASSWORD=zabbix_pass-dpostgresdockerrun--namezabbix-server-eDB_SERVER_HOST=zabbix-db-ePOSTGRES_USER=zabbix-ePOSTGRES_PASSWORD=zabbix_pass--linkzabbix-db:postgres-p10051:10051......
  • 多主机 docker redis集群
    多主机DockerRedis集群在分布式系统中,Redis是一个常用的内存数据库,它提供了高性能的键值存储。然而,在面对大流量的情况下,单个Redis实例可能无法满足需求。为了提高可用性和性能,我们可以使用多主机的Redis集群。Docker是一个流行的容器化平台,它可以帮助我们轻松地创建和......