创建服务失败,并显示“未指定命令”

时间:2019-07-18 11:50:22

标签: docker docker-compose dockerfile

我在容器领域非常陌生。 我试图在docker_composer的帮助下启动ora2pg并运行,但出现以下错误消息:

  

postgres_db是最新的

     

创建ora2pg_client ...错误

     

错误:用于ora2pg_client不能为服务ora2pg创建容器:未指定命令

     

错误:for ora2pg无法为服务ora2pg创建容器:未指定命令

     

错误:启动项目时遇到错误。

我的docker-composer.yml如下:

version: "3.7"
services:
 postgresql:
  restart: always
  image: postgres
  container_name: "postgres_db"
  ports:
  - "5432:5432"
  environment:
  - DEBUG=false
  - DB_USER=
  - DB_PASS=
  - DB_NAME=
  - DB_TEMPLATE=
  - DB_EXTENSION=
  - REPLICATION_MODE=
  - REPLICATION_USER=
  - REPLICATION_PASS=
  - REPLICATION_SSLMODE=
  volumes:
  - ./postgres/data:/var/lib/postgresql/data
  - ./postgres/initdb:/docker-entrypoint-initdb.d

 ora2pg:
  image: flockers/ora2pg
  container_name: "ora2pg_client"
  environment:
  - DB_HOST=127.0.0.1
  - DB_SID=xe
  - ORA2PG_USER=MAX
  - DB_PASS=MAX
  volumes:
  - ./ora2pg/export:/export

注意:我已经在同一台计算机上拥有一个Oracle数据库。

谢谢!

2 个答案:

答案 0 :(得分:3)

如果您查看Dockerfile https://hub.docker.com/r/flockers/ora2pg/dockerfile flockers/ora2pg,则缺少CMDentrypoint

 ora2pg:
  image: flockers/ora2pg
  container_name: "ora2pg_client"
  environment:
  - DB_HOST=127.0.0.1
  - DB_SID=xe
  - ORA2PG_USER=MAX
  - DB_PASS=MAX
  volumes:
  - ./ora2pg/export:/export
  command: tail -f /dev/null

因此在command: tail -f /dev/null处,它将保持您的容器运行,并且不会执行任何操作,请替换为命令。

答案 1 :(得分:2)

flockers/ora2pg没有指定任何CMD,可以通过运行以下命令来显示该信息:

docker pull flockers/ora2pg
docker image inspect flockers/ora2pg
[ 
...
 "Cmd": null
...
]
Docker映像中的

CMDENTRYPOINT将定义它们的运行方式,请参阅Dockerfile reference for details。您正在运行的映像中都未定义。

您可以在command文件中使用以下内容定义一个docker-compose

ora2pg:
  image: flockers/ora2pg
  container_name: "ora2pg_client"
  command: ["some", "command", "running", "your", "database"]
  ...