如何使用intellij在docker容器中进行开发?

问题描述 投票:0回答:5

我知道intellij有一个docker容器插件,但是它似乎不允许我在容器本身内部进行开发。想法很简单,我不想配置我的主机拥有正确的环境工具。我宁愿只是一个 docker 容器设置,然后使用 intellij 在容器本身中查找库、功能等。

这对于 c++、java 和 scala 开发非常有帮助。此外,它对于调试也很有用。

那么是否可以使用intellij在docker容器中进行开发?

intellij-idea docker
5个回答
8
投票

所以您只想在容器中工作,就像在成熟的虚拟机中一样,对吧?然后,您应该运行一个容器,附加一个显示器(以运行 IDEA)并开始配置您的开发环境。

对于显示部分,我将测试你可以在 docker 容器中运行 GUI 应用程序吗?中给出的一些答案。本主题中有一些非常酷的答案,展示了在容器中运行 GUI 应用程序的各种方法。


7
投票

方法不应该是: 拥有本地存储库和本地 IDE。存储库中有 docker 文件,最终有 docker-compose.yml,它启动运行项目所需的环境。 将带有源的本地驱动器安装到 docker(卷)中,因此在本地文件夹中所做的更改会反映在 docker 中,其他方向类似。


6
投票

请看这个基于 Alpine Linux 的 Intellij IDEA CI 和 JDK8 的示例(取自此处 https://raw.githubusercontent.com/shaharv/docker/master/alpine/dev/Dockerfile

# Alpine 3.8 C++/Java Developer Image
#
# For IntelliJ and GUI (X11), run the image with:
# $ XSOCK=/tmp/.X11-unix && sudo docker run -i -v $XSOCK:$XSOCK -e DISPLAY -u developer -t [image-name]
#
# Then run IntelliJ with:
# /idea-IC-191.6707.61/bin/idea.sh

FROM alpine:3.8

ENV LANG C.UTF-8

RUN set -ex && \
    apk add --no-cache --update \
    # basic packages
        bash bash-completion coreutils file grep openssl openssh nano sudo tar xz \
    # debug tools
        gdb musl-dbg strace \
    # docs and man
        bash-doc man man-pages less less-doc \
    # GUI fonts
        font-noto \
    # user utils
        shadow

RUN set -ex && \
    apk add --no-cache --update \
    # C++ build tools
        cmake g++ git linux-headers libpthread-stubs make

RUN set -ex && \
    apk add --no-cache --update \
    # Java tools
        gradle openjdk8 openjdk8-dbg

# Install IntelliJ Community
RUN set -ex && \
    wget https://download-cf.jetbrains.com/idea/ideaIC-2019.1.1-no-jbr.tar.gz && \
    tar -xf ideaIC-2019.1.1-no-jbr.tar.gz && \
    rm ideaIC-2019.1.1-no-jbr.tar.gz

# Create a new user with no password
ENV USERNAME developer
RUN set -ex && \
    useradd --create-home --key MAIL_DIR=/dev/null --shell /bin/bash $USERNAME && \
    passwd -d $USERNAME

# Set additional environment variables
ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
ENV JDK_HOME  /usr/lib/jvm/java-1.8-openjdk
ENV JAVA_EXE  /usr/lib/jvm/java-1.8-openjdk/bin/java

4
投票

现在使用 Jetbrains Gateway 有更好的方法来做到这一点。只需确保您在最初使用公开端口运行的容器中安装了 OpenSSH 服务器(最新的 Ubuntu 容器已经安装了该服务器),即

-p 220:22
(我喜欢 220),并且修改后正在运行 SSH 服务,即
service ssh start
/etc/ssh/sshd_config
启用 root 登录和密码身份验证,然后
service ssh restart
。确保为 root 用户设置密码,即
passwd root
(或通过其他步骤设置新用户)。然后您需要做的就是打开 Jetbrains Gateway,并通过 SSH 连接到容器,并设置字段:user=root、host=localhost 和 port=220(或您选择的任何内容);请注意,您还需要指定一个项目位置,在我的用例中是 Java 应用程序存储库根目录——这意味着您需要在容器中安装 Java 和 Maven 或任何其他工具,但并不需要这样做。不影响连接能力。假设您的连接没有问题,您将看到 Gateway 在容器内安装 IDE 后端的活动(大约需要 10 分钟),然后启动一个 IDE 客户端,该客户端是 IntelliJ 的轻型版本(或您选择的任何其他 IDE 版本),即老实说,在撰写本文时有点错误。但它确实有效,并且让我的一些同事摆脱了对 Windows 机器的困扰,在当前芯片短缺的环境下没有太多升级到 Mac 的选择。请注意,每次重新启动容器时,您还需要重新启动 SSH 服务,除非您编写脚本使其在容器启动时自动启动。


0
投票

您现在可以在 IntelliJ 产品中使用 Dev Containers

您通过标准

.devcontainer
规范配置开发容器,它在 IntelliJ 客户端中打开,该客户端通过
dev-container
规范中指定的 docker 映像运行它。

您可以通过在客户端中显示终端来验证这一点,它将显示它以 docker 容器中的用户身份运行。

© www.soinside.com 2019 - 2024. All rights reserved.