Docker Tkinter:无法连接到显示器

2024-06-07 02:55:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想运行3个Docker容器并启动一个简单的程序

  • Python
  • 博士后
  • 管理员

我正在使用docker compose和DockerFile来运行和构建所有这些容器。在我想在Python应用程序中启动GUI之前,一切都很好。我使用Tkinter和Plot来显示我的应用程序,但每次启动docker compose文件时,都会出现如下错误:

_tkinter.TclError: couldn't connect to display "unix:1"

您可以看到以下文件:

docker-compose.yml

version: '3.1'

services:
  mypython:
    container_name: tsp_python
    build:
      context: .
      dockerfile: ./config/python/Dockerfile
    depends_on:
      - db
      - adminer
    volumes:
      - /tmp/.X11-unix:/tmp/.X11-unix:rw
    environment:
      DISPLAY: unix$DISPLAY

  db:
    container_name: tsp_postgres
    image: postgres:11
    build:
      context: .
      dockerfile: ./config/postgres/Dockerfile
    restart: always
    ports:
      - 5432:5432
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: ${DB_NAME}
      POSTGRES_PASSWORD: ${DB_USER}
      POSTGRES_USER: ${DB_PASSWORD}

  adminer:
    container_name: tsp_adminer
    image: adminer
    restart: always
    ports:
      - 8080:8080
    depends_on:
      - db

volumes:
  db-data:

python Dockerfile:

FROM python:3.7.3

WORKDIR /code

RUN pip3 install --upgrade pip

COPY ./require.txt .
RUN pip install -r require.txt

COPY /src .

ENV PYTHONPATH "${PYTHONPATH}:/code"

EXPOSE 5432/tcp

CMD ["python", "__main__.py"]

Tags: composedockernamedockerfiledbdatacontainerunix