Docker启动后撰写run shell命令

时间:2020-02-09 09:57:07

标签: docker docker-compose dockerfile docker-machine graphdb

对于一个世界您好示例,我想启动2个容器:

  1. Flask服务器(稍后将通过http访问Graphdb服务器)
  2. Graphdb服务器

对于我的Flask服务器,我编写了以下Dockerfile:

FROM python:3.7.1

LABEL Author="Test"
LABEL version="1.0.0"

ENV PYTHONDONTWRITEBYTECODE 1
ENV FLASK_APP "app.py"
ENV FLASK_ENV "development"
ENV FLASK_DEBUG True

RUN mkdir /app
WORKDIR /app

RUN pip install flask

ADD . /app

EXPOSE 5000

CMD flask run --host=0.0.0.0

我的docker-compose.yml文件如下:

version: '3'
services:
  db:
    image: ontotext/graphdb:9.1.1-se
    ports:
    - "7200:7200"
  server:
    build: .
    ports:
    - "5000:5000"
    depends_on:
    - db

现在我要执行shell命令

loadrdf -c [.ttl文件的路径]

将graphdb实例定位为从文件加载我的RDF数据,该文件位于../ rdf / rdf.ttl(来自Dockerfile和docker-compose.yml的相对路径)。

我的问题是如何从graphdb容器访问rdf.ttl文件以及如何/在何处执行此shell命令?

1 个答案:

答案 0 :(得分:3)

您需要在docker-compose.yml中装载一个包含RDF文件的卷:

  server:
    ...
    volumes:
    - ../rdf:/rdf

在服务运行时,您可以在主机上运行以下命令:

docker-compose exec server loadrdf /rdf/rdf.ttl

这将在容器内运行命令,并在安装点找到文件。

相关问题