首页 > 解决方案 > docker-compose exec 在运行带有参数的容器上

问题描述

我想通过提供不同的参数多次使用现有的容器。我有一个文件。docker-compose.ymlentrypoint: ["/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}

我的问题:

  1. docker-compose run bcp ...容器一直在重新启动,并使用?中提供的相同参数不断检索数据。
  2. 我想使用一个容器并覆盖参数,这样我就可以跳过昂贵的安装。

也许有entrypoint & commandin的组合docker-compose.yml?所以,基本上,我想执行python3 -m --database ... --schema ... --tables .... 理想情况下,我会在没有dockerfile.

标签: pythondockerdocker-composedockerfile

解决方案


docker-compose run正在使用图像创建具有提供的参数的容器。

用于docker-compose run foo --name foo1 --[other arguments]为每组参数提供一个容器。

如果您不想在作业完成后保留容器,则-rm包含关闭时移除容器的选项。


推荐阅读