如何使用 Docker 将图形工具附加到 Django
How to attach graph-tool to Django using Docker
我需要在我的 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 图像中使用:
docker run -it -u user -w /home/user tiagopeixoto/graph-tool ipython
一切顺利。
我做错了什么以及如何修复它并最终将图形工具附加到 Django?谢谢!
与其为 graphtool 使用单独的 docker 图像,我认为最好在用于 Django 的 Dockerfile
中使用它。例如,更新您当前的 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
就是这样。现在,如果您通过 docker exec -ti djcon bash
(或任何生成的名称而不是 djcon)访问您的 web
服务的 shell,并访问 django shell 像这样 python manage.py shell
。然后键入 from graph_tool.all import *
,它不会抛出任何导入错误。
我需要在我的 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 图像中使用:
docker run -it -u user -w /home/user tiagopeixoto/graph-tool ipython
一切顺利。 我做错了什么以及如何修复它并最终将图形工具附加到 Django?谢谢!
与其为 graphtool 使用单独的 docker 图像,我认为最好在用于 Django 的 Dockerfile
中使用它。例如,更新您当前的 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
就是这样。现在,如果您通过 docker exec -ti djcon bash
(或任何生成的名称而不是 djcon)访问您的 web
服务的 shell,并访问 django shell 像这样 python manage.py shell
。然后键入 from graph_tool.all import *
,它不会抛出任何导入错误。