ChatGPT解决这个技术问题 Extra ChatGPT

在 Pycharm 上通过 docker-compose 运行 Python 控制台

我在通过 docker-compose 使用远程 python 解释器运行 pycharm 时遇到了一些问题。一切都很好,除了 Python 控制台,当我按下运行按钮时,它只显示以下消息:

“错误:无法从 docker-compose 输出中找到服务“web”的容器名称”

如果我的 docker-compose.yml 提供 web 服务,我真的不明白为什么它让我一直显示。

有什么帮助吗?

编辑:

码头工人-compose.yml

version: '2'

volumes:
  dados:
    driver: local
  media:
    driver: local
  static:
    driver: local

services:
  beat:
    build: Docker/beat
    depends_on: 
      - web
      - worker
    restart: always
    volumes:
      - ./src:/app/src
  db:
    build: Docker/postgres
    ports:
      - 5433:5432
    restart: always
    volumes:
      - dados:/var/lib/postgresql/data
  jupyter:
    build: Docker/jupyter
    command: jupyter notebook
    depends_on: 
      - web
    ports:
      - 8888:8888
    volumes:
      - ./src:/app/src
  python:
    build:
      context: Docker/python
      args:
        REQUIREMENTS_ENV: 'dev'
    image: helpdesk/python:3.6
  redis:
    image: redis:3.2.6
    ports:
      - 6379:6379
    restart: always
  web:
    build:
      context: .
      dockerfile: Docker/web/Dockerfile
    command: python manage.py runserver 0.0.0.0:8000
    depends_on:
      - python
      - db
    ports:
      - 8001:8000
    restart: always
    volumes:
      - ./src:/app/src
  worker:
    build: Docker/worker
    depends_on: 
      - web
      - redis
    restart: always
    volumes:
      - ./src:/app/src

Dockerfile

FROM python:3.6

# Set requirements environment
ARG REQUIREMENTS_ENV
ENV REQUIREMENTS_ENV ${REQUIREMENTS_ENV:-prod}

# Set PYTHONUNBUFFERED so the output is displayed in the Docker log
ENV PYTHONUNBUFFERED=1

# Install apt-transport-https
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y \
        apt-transport-https

# Configure yarn repo
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

# Install APT dependencies
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y \
        locales \
        openssl \
        yarn

# Set locale
RUN locale-gen pt_BR.UTF-8 && \
    localedef -i pt_BR -c -f UTF-8 -A /usr/share/locale/locale.alias pt_BR.UTF-8

ENV LANG pt_BR.UTF-8
ENV LANGUAGE pt_BR.UTF-8
ENV LC_ALL pt_BR.UTF-8

# Copy requirements files to the container
RUN mkdir -p /tmp/requirements
COPY requirements/requirements-common.txt \
    requirements/requirements-$REQUIREMENTS_ENV.txt \
    /tmp/requirements/

# Install requirements
RUN pip install \
    -i http://root:test@pypi.defensoria.to.gov.br:4040/root/pypi/+simple/ \
    --trusted-host pypi.defensoria.to.gov.br \
    -r /tmp/requirements/requirements-$REQUIREMENTS_ENV.txt

# Remove requirements temp folder
RUN rm -rf /tmp/requirements

这是 python 镜像 Dockerfile,web Dockerfile 只是从这个镜像中声明并将源文件夹复制到容器中。

不……老实说,我几个月前就放弃了。我正在通过 docker 运行一个 jupyter 实例,以便在我的项目中使用资源更丰富的 shell。
不妨在这里记录一下:youtrack.jetbrains.com/issue/PY-18748 这是票,截至 7 月 19 日,它已修复,只需要发布。 ——等待游戏..
这可能是一个很长的镜头,但您是否尝试过在网络服务上设置 container_name 属性?

P
Pablo Martinez

我认为这是一个依赖链问题,web 依赖于 python 所以,当 python 容器启动时,web 仍然不存在。这可能会导致错误。

干杯


佚名

通过命令行安装所需的库并从 PATH 运行 python 解释器就足够了。

您还可以参考 JetBrains 手册,了解他们如何为其 IDE 的解释器进行配置。