【发布时间】:2022-10-13 03:31:59
【问题描述】:
我使用 VSCode 1.63.2 通过 Ubuntu 20.04 SSH 连接到远程机器,然后在 Docker 容器内处理项目。每当我在容器中执行 Python 脚本时关闭 VSCode 窗口时,它都会停止所有终端进程。当我重新连接到容器时,我看到一个 Python 终端显示 Session contents restored from <date> at <time> 和脚本的输出,直到我从容器断开连接的那一刻。但是,我希望容器在我关闭 VSCode 或关闭本地计算机时继续运行。
到目前为止我尝试过的事情:首先,我在远程机器上克隆了我的 GitHub 存储库,并使用以下 Dockerfile 构建了一个 Docker 映像
FROM python:3.8-bullseye
RUN pip install -U pip setuptools wheel &&\
useradd -m -r fabioklr
WORKDIR /home/fabioklr/masterthesis
RUN chown -R fabioklr .
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
ARG GIT_HASH
ENV GIT_HASH=${GIT_HASH:-dev}
USER fabioklr
RUN git config --global init.defaultBranch main &&\
git init &&\
git remote add origin <url-to-remote-repo>
然后我为图像运行docker build .,运行docker run -dit <image-name:tag> /bin/bash 来启动容器,并使用Remote-Containers: Attach to Running Container 命令将VSCode 附加到容器。
其次,我在没有自定义 Dockerfile 和命令行的情况下进行了尝试。我在远程机器上打开了我的项目文件夹,从命令面板中选择了Remote-Containers: Open Folder in Container 命令和Python 3 基本图像。 VSCode 自动完成了其余的工作,但我仍然遇到了同样的问题。
第三,我使用相同的Open Folder in Container command 进行了尝试,但使用了上面的 Dockerfile 和自定义 devcontainer.json 文件,我在其中指定了"shutdownAction: "none",因为它在VSCode Docs 中说此设置应该可以防止我的问题。
指示 VS Code 和其他 devcontainer.json 支持工具是否应该在相关工具窗口关闭/关闭时停止容器。 值为 none、stopContainer(图像或 Dockerfile 的默认值)和 stopCompose(Docker Compose 的默认值)。
由于post 使用
nohup,我设法用VSCode 解决了这个问题,但这对于我的工作流程来说并不理想。另外,这个问题特别奇怪,因为我几周前没有遇到它。我错过了什么还是这是一个问题?谢谢!
【问题讨论】:
标签: python docker visual-studio-code