Docker启动后编写运行shell命令
Docker compose run shell command after startup
对于一个 hello world 示例,我想启动 2 个容器:
- Flask 服务器(稍后通过 http 访问 Graphdb 服务器)
- 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 [path to .ttl file]
定位 graphdb 实例以从位于以下位置的文件加载我的 RDF 数据:../rdf/rdf.ttl(来自 Dockerfile 和 docker-compose.yml 的相对路径)。
我的问题是如何从 graphdb 容器访问 rdf.ttl 文件以及如何/在何处执行此 shell 命令?
您需要在 docker-compose.yml 中安装一个包含您的 RDF 文件的卷:
server:
...
volumes:
- ../rdf:/rdf
然后使用您的服务 运行ning 您可以 运行 在主机上执行此命令:
docker-compose exec server loadrdf /rdf/rdf.ttl
这将 运行 您在容器中的命令并在挂载点找到您的文件。
对于一个 hello world 示例,我想启动 2 个容器:
- Flask 服务器(稍后通过 http 访问 Graphdb 服务器)
- 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 [path to .ttl file]
定位 graphdb 实例以从位于以下位置的文件加载我的 RDF 数据:../rdf/rdf.ttl(来自 Dockerfile 和 docker-compose.yml 的相对路径)。
我的问题是如何从 graphdb 容器访问 rdf.ttl 文件以及如何/在何处执行此 shell 命令?
您需要在 docker-compose.yml 中安装一个包含您的 RDF 文件的卷:
server:
...
volumes:
- ../rdf:/rdf
然后使用您的服务 运行ning 您可以 运行 在主机上执行此命令:
docker-compose exec server loadrdf /rdf/rdf.ttl
这将 运行 您在容器中的命令并在挂载点找到您的文件。