我制作了一个小小的python脚本来创建一个DB和RethinkDB中的一些表。
但是现在我正试图在用rethink
启动的docker-compose
容器中启动这个python脚本。
这是我的docker-compose.yml重新思考容器配置
# Rethink DB
rethink:
image: rethinkdb:latest
container_name: rethink
ports:
- 58080:8080
- 58015:28015
- 59015:29015
我正在尝试在启动容器后执行脚本
docker exec -it rethink python src/app/db-install.py
但我知道这个错误
rpc错误: code =2 desc = oci运行时错误: exec失败: exec:"python":$PATH中找不到可执行文件
在我的容器中找不到Python。这可以在给定容器内使用docker-compose
或docker exec
执行python脚本吗?
发布于 2016-12-02 15:55:33
rethinkdb映像基于debian:jessie映像:
debian:jessie映像没有安装python。
因此,您需要创建自己的Dockerfile,如下所示:
FROM rethinkdb:latest
RUN apt-get update && apt-get install -y python
然后改变你的码头-组成:
# Rethink DB
rethink:
build : .
container_name: rethink
ports:
- 58080:8080
- 58015:28015
- 59015:29015
build : .
是指向您的Dockerfile的路径。
发布于 2016-12-02 15:49:03
首先,看看在python
中是否有container
可执行文件。
docker exec -it rethink which python
如果存在,请在前面的步骤中使用which
命令提供的which
:
docker exec -it rethink /absolute/path/to/python src/app/db-install.py
如果没有,您可以将python script
转换为bash script
,这样您就可以运行它而不需要额外的executables
和libraries
。
或者您可以创建一个dockerfile
,使用base image
,并安装python
。
码头文件:
FROM rethinkdb:latest
RUN apt-get update && apt-get install -y python
码头工人撰写文件:
rethink:
build : .
container_name: rethink
ports:
- 58080:8080
- 58015:28015
- 59015:29015
发布于 2022-01-17 23:22:28
码头工
假设安装了python,请尝试:
docker-compose run --rm MY_DOCKER_COMPOSE_SERVICE MY_PYTHON_COMMAND
首先,您可以先进入shell,然后从命令提示符中运行python脚本。
docker-compose run --rm MY_DOCKER_COMPOSE_SERVICE bash
在您的示例中,MY_DOCKER_COMPOSE_SERVICE是“that”,这里不是容器名称,而是服务的名称(第一行rethink:
),只有服务是与docker-compose run
一起运行的,而不是容器。
MY_PYTHON_COMMAND在Python2的例子中是python src/app/db-install.py
,但在Python3中是python -m src/app/db-install
(没有".py"),或者,如果安装了Python3和Python2,则是python3 -m src/app/db-install
。
Dockerfile
为了能够运行这个python命令,Python文件需要在容器中。因此,在您需要使用build: .
调用的Dockerfile中,您需要将构建目录复制到您选择的容器中的目录中
COPY $PROJECT_PATH /tmp
这个/tmp
将在您的构建目录中创建。如果只编写".",则没有任何子文件夹,并将其直接保存在构建目录中。
当使用/tmp
作为子文件夹时,您可以在Dockerfile的末尾编写:
WORKDIR /tmp
码头工
或者,如果您不将WORKDIR
从构建(".
")上下文更改为/tmp
,并且仍然希望到达/tmp
,则运行您的/tmp/db-install.py
文件。
https://stackoverflow.com/questions/40935895
复制相似问题