我在容器领域非常陌生。 我试图在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数据库。
谢谢!
答案 0 :(得分:3)
如果您查看Dockerfile https://hub.docker.com/r/flockers/ora2pg/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
因此在command: tail -f /dev/null
处,它将保持您的容器运行,并且不会执行任何操作,请替换为命令。
答案 1 :(得分:2)
flockers/ora2pg
没有指定任何CMD
,可以通过运行以下命令来显示该信息:
docker pull flockers/ora2pg
docker image inspect flockers/ora2pg
[
...
"Cmd": null
...
]
Docker映像中的 CMD
和ENTRYPOINT
将定义它们的运行方式,请参阅Dockerfile reference for details。您正在运行的映像中都未定义。
您可以在command
文件中使用以下内容定义一个docker-compose
:
ora2pg:
image: flockers/ora2pg
container_name: "ora2pg_client"
command: ["some", "command", "running", "your", "database"]
...