Docker 创建服务失败,原因是“未指定命令”

Docker 创建服务失败,原因是“未指定命令”,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我是集装箱行业的新手。 我试图在docker_composer的帮助下启动并运行ora2pg,但收到以下错误消息: postgres_db是最新的 正在创建ora2pg_客户端。。。错误 错误:对于ora2pg\u,客户端无法为服务ora2pg创建容器:未指定命令 错误:for ora2pg无法为服务ora2pg创建容器:未指定命令 错误:在启动项目时遇到错误 我的docker-composer.yml如下所示: version: "3.7" services: postgresql: r

我是集装箱行业的新手。 我试图在docker_composer的帮助下启动并运行ora2pg,但收到以下错误消息:

postgres_db是最新的

正在创建ora2pg_客户端。。。错误

错误:对于ora2pg\u,客户端无法为服务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数据库

谢谢大家!

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

docker pull flockers/ora2pg
docker image inspect flockers/ora2pg
[ 
...
 "Cmd": null
...
]
Docker图像中的CMD和ENTRYPOINT将定义它们的运行方式,请参阅。在您正在运行的映像中都没有定义

您可以在docker compose文件中使用定义命令:

ora2pg:
  image: flockers/ora2pg
  container_name: "ora2pg_client"
  command: ["some", "command", "running", "your", "database"]
  ...
flockers/ora2pg没有指定任何CMD,您可以通过运行以下命令来显示:

docker pull flockers/ora2pg
docker image inspect flockers/ora2pg
[ 
...
 "Cmd": null
...
]
Docker图像中的CMD和ENTRYPOINT将定义它们的运行方式,请参阅。在您正在运行的映像中都没有定义

您可以在docker compose文件中使用定义命令:

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

如果查看Dockerfile flockers/ora2pg,则CMD或入口点缺失

 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

因此这里的命令是:tail-f/dev/null它只会让你的容器保持运行,不会做任何事情,用你的命令替换它。

如果你查看Dockerfile flockers/ora2pg,CMD或entrypoint就会丢失

 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

所以这里的命令:tail-f/dev/null它只会让你的容器保持运行,不会做任何事情,用你的命令替换它。

巧合,只是几秒钟的时间差,然后发布答案:Dmine也是,谢谢你对StackOverflow的贡献亲爱的Pierre谢谢你们:巧合,在发布答案时只差几秒钟:我也是Dmine,感谢为StackOverflow做出贡献亲爱的Pierre谢谢你们两位: