python - docker-compose exec 在运行带有参数的容器上
问题描述
我想通过提供不同的参数多次使用现有的容器。我有一个文件。docker-compose.yml
entrypoint: ["/bin/bash", "entrypoint.sh"]
要运行容器,我使用命令docker-compose run foo --database=foo --schema=boo --tables=puah
。它工作完美。容器完成这项工作。
这里是docker-compose.yml
version: "3"
services:
bcp:
image: ubuntu:18.04
restart: always
tty: true
entrypoint: ["/bin/bash", "/ingestion/bcp-entrypoint.sh"]
volumes:
- ./services/bcp:/ingestion/services/bcp
- ./bcp-entrypoint.sh:/ingestion/bcp-entrypoint.sh
这里是bcp-entrypoint.sh
#!/bin/bash
INGESTION_DIR=/ingestion
TMP_DIR=/tmp/ingestion
apt-get update
apt-get upgrade -y
apt-get clean -y
apt-get install -y python3-pip
apt-get install -y curl
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | tee /etc/apt/sources.list.d/msprod.list
apt-get update
ACCEPT_EULA=Y apt-get install -y mssql-tools unixodbc-dev
cd ${INGESTION_DIR}
mkdir ${TMP_DIR}
python3 -m --database $database --schmema $schema --tables ${TABLES}
我的问题:
docker-compose run bcp ...
容器一直在重新启动,并使用?中提供的相同参数不断检索数据。- 我想使用一个容器并覆盖参数,这样我就可以跳过昂贵的安装。
也许有entrypoint & command
in的组合docker-compose.yml
?所以,基本上,我想执行python3 -m --database ... --schema ... --tables ...
. 理想情况下,我会在没有dockerfile
.
解决方案
docker-compose run
正在使用图像创建具有提供的参数的容器。
用于docker-compose run foo --name foo1 --[other arguments]
为每组参数提供一个容器。
如果您不想在作业完成后保留容器,则-rm
包含关闭时移除容器的选项。
推荐阅读
- mysql - 自动生成查询的命令不同步
- python - 无法在 Mac OS 上的 Sublime 中运行 Python 脚本
- rust - 如何从 Rocket 中的请求中检索 HTTP 标头?
- android - Kotlin Android Studio 片段中未解决的引用
- html - HTML 未链接到外部 CSS 样式表
- laravel - 如何使用 vue js 将数据加载到选择输入中?
- powershell - psm1 中“使用命名空间”的意外副作用
- java - SQL查询只返回一个条目,而它应该返回几个
- python - 如何在网站中嵌入 google.com(烧瓶)
- grails - 在 grails 4.0.5 中,将数据源定义移动到 runtime.groovy 会导致在测试期间不创建 DB