Docker составить команду запуска оболочки после запуска - PullRequest
0 голосов
/ 09 февраля 2020

для примера hello world Я хочу запустить 2 контейнера:

  1. Flask сервер (который позже обращается к серверу Graphdb через http)
  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

Теперь я хотите выполнить команду оболочки

loadrdf - c [путь к файлу .ttl]

, предназначенную для экземпляра graphdb, чтобы загрузить мои данные RDF из файла, расположенного at: ../rdf/rdf.ttl (относительный путь из Dockerfile и docker -compose.yml).

Мой вопрос: как получить доступ к файлу rdf.ttl из контейнера graphdb и как / где выполнить эту команду оболочки?

1 Ответ

3 голосов
/ 09 февраля 2020

Вам необходимо смонтировать том в вашем docker -compose.yml, содержащем ваши файлы RDF:

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

Затем, когда ваша служба запущена, вы можете запустить эту команду на хосте:

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

Это запустит вашу команду внутри контейнера и найдет ваш файл в точке монтирования.

...