Как прикрепить график-инструмент к Django с помощью Docker - PullRequest
0 голосов
/ 21 ноября 2018

Мне нужно использовать некоторые графические вычисления в моем проекте Django.Поэтому я начал с docker pull tiagopeixoto/graph-tool, а затем добавил его в свой файл Docker-compose:

version: '3'

services:

  db:
    image: postgres

  graph-tool:
    image: dcagatay/graph-tool

  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
      - graph-tool

Когда я up мой Docker-compose, я получил строку:

project_graph-tool_1_87e2d144b651 exited with code 0

И наконец, когда мои проекты Django запускаются, я не могу импортировать модули из Graph-Tool, такие как:

from graph_tool.all import *

Если я пытаюсь работать непосредственно в этом образе докера, используя:

docker run -it -u user -w /home/user tiagopeixoto/graph-tool ipython

все идетхорошо.Что я делаю не так и как я могу это исправить и, наконец, присоединить Graph-Tool к Django?Спасибо!

1 Ответ

0 голосов
/ 24 ноября 2018

Вместо того, чтобы использовать отдельное изображение докера для graphtool, я думаю, что лучше использовать его в том же Dockerfile, который вы используете для Django.Например, обновите ваш текущий Dockerfile:

FROM ubuntu:16.04  # using ubuntu image

ENV PYTHONUNBUFFERED 1
ENV C_FORCE_ROOT true

# python3-graph-tool specific requirements for installation in Ubuntu from documentation
RUN echo "deb http://downloads.skewed.de/apt/xenial xenial universe" >> /etc/apt/sources.list && \
echo "deb-src http://downloads.skewed.de/apt/xenial xenial universe" >> /etc/apt/sources.list

RUN apt-key adv --keyserver pgp.skewed.de --recv-key 612DEFB798507F25

# Install dependencies
RUN apt-get update \
    && apt-get install -y python3-pip python3-dev \ 
    && apt-get install --yes --no-install-recommends --allow-unauthenticated python3-graph-tool \
    && cd /usr/local/bin \
    && ln -s /usr/bin/python3 python \
    && pip3 install --upgrade pip

# Project specific setups 
# These steps might be different in your project
RUN mkdir /code
WORKDIR /code
ADD . /code
RUN pip3 install -r requirements.pip

Теперь также обновите ваш файл docker-compose:

version: '3'
services:
  db:
    image: postgres
  web:
    build: .
    container_name: djcon  # <-- preferred over generated name
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

Вот и все.Теперь, если вы перейдете в оболочку службы web по docker exec -ti djcon bash (или к любому сгенерированному имени вместо djcon ) и получите доступ к оболочке django, как это python manage.py shell.Затем введите from graph_tool.all import *, и он не выдаст ошибку импорта.

...