【问题标题】:Run python script for existing docker image in Visual Studio Code在 Visual Studio Code 中为现有 docker 映像运行 python 脚本
【发布时间】:2021-07-05 14:47:25
【问题描述】:

我有一个现有的 docker 文件夹(带有 python 脚本的文件夹,具有 Dockerfiledocker-compose.yaml) - 如果我直接通过 docker 运行它,它运行良好。我希望能够在Visual Studio Code 下运行 docker,所以当我在VSCode 中更改脚本中的代码时 - 它会在 docker 中重建并重新运行脚本(我希望它能够快速完成)

我已经为VSCode 安装了Remote-Containers 插件,将文件夹作为容器打开,并重建了容器。该容器似乎已构建,我可以在终端中访问它 - 如果我在终端中手动运行所有内容,它可以工作,但我在 VSCode 遇到问题:

  1. 每次我重建容器时,我都必须在 VSCode 中安装 Python 插件(它会在 F5 上询问)。这是一个不便,但对于 VSCode 自动解决这个问题会很好。

  2. Dockerfile 有命令: RUN pipenv installRUN cp config.sample.py config.py 这些似乎不在容器中执行。如果我在终端中手动运行它们 - 我可以继续,但当然,我希望 VSCode 能够这样做。

  3. Dockerfile 也有命令: CMD ["pipenv", "run", "python", "fp.py"] 我希望在 F5 上执行此操作。相反,VS 代码只是运行 /use/bin/env /user/local/bin/python fp.py - 错过了所有的环境。理想情况下,能够在F5 上调试它会很好。我无法选择pipenv 作为解释器。

  4. 我怀疑所有这些都执行docker-compose.yaml。不确定我是否真的需要它,但如果我能以某种方式将它包含在管道中,那就太棒了 - 但我可能错了,它已经在执行了

我的Dockerfile

FROM python:3.8

RUN python3.8 -m pip install --upgrade pip && \
pip3 install pipenv

WORKDIR /app

COPY Pipfile* ./
RUN pipenv install

COPY . .

RUN cp config.sample.py config.py

CMD ["pipenv", "run", "python", "fp.py"]

这里对我来说有很多新东西,所以我可能会以一种愚蠢的方式来做这件事——我的目标是设置 VSCode,这样我就可以在容器下轻松开发这个脚本。

我的launch.json 是空的 - 不知道该写什么。

【问题讨论】:

  • 这里使用容器真的重要吗?你能在没有 Docker 的情况下建立一个非容器 Docker 虚拟环境,并将其用于日常开发吗?如果您安装了pipenv,您应该能够运行pipenv install,从签入源代码树的Pipfile 创建它。
  • @DavidMaze 您可能适合这种情况,但我真的很想弄清楚容器设置。我有一个很大的容器列表(python 只是第一个) - 所以我真的很想弄清楚,如何做到这种容器方式

标签: python docker visual-studio-code pipenv


【解决方案1】:

我想或多或少我想通了。我对 docker-compose.yaml 的存在感到困惑,但我发现团队并没有真正使用它,而且实际上是预期的。

我仍然需要做很多工作才能运行它,但它现在运行良好,所以我有 50% 的快乐。我的过程:

  1. 打开文件夹VS Code
  2. 重建容器
  3. 在终端(在容器上)运行:pipenv install。这将创建稍后将在 VS 中显示的 env - 如果未安装 pipenv,则它不在列表中
  4. F5
  5. 在容器中安装 Python 插件
  6. 选择 pipenv 环境(名称中有很多文字,最后提到了 pipenv,很容易与其他环境混淆)
  7. 现在我可以使用 F5 来运行我的代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    • 2023-03-10
    • 2016-01-01
    • 2023-03-11
    • 2016-04-08
    • 2021-04-28
    • 1970-01-01
    相关资源
    最近更新 更多