在某个项目中,我们使用此Docker镜像执行一些PoC:https://github.com/MaksymBilenko/docker-oracle-12c
说明说你可以将SQL放到docker-entrypoint-initdb.d
文件夹中以在启动时加载它们,所以我的Dockerfile如下:
FROM sath89/oracle-12c
COPY */*.sql /docker-entrypoint-initdb.d/
EXPOSE 8080 1521
那里的火箭科学不多。 SQL文件存储如下:
project/
├── init/
│ ├── 101-init.sql
│ ├── 102-sometables.sql
│ ├── 103-few-triggers.sql
│ └── 104-more-stuff.sql
├── masterdata/
│ ├── 201-some-inserts.sql
│ └── 202-more-inserts.sql
|
└── Dockerfile
当我使用普通的Docker命令运行它时出现问题:
docker run --name=my-oracle -d -v db:/u01/app/oracle:rw -p 1527:1521 -p 10000:8080 my-oracle
脚本被选中了,但它们并没有按字母顺序执行,所以我遇到了大量的错误。
相反,如果我从docker-compose运行它,使用这个YML文件,它就像一个魅力,一切都按顺序执行:
...
db:
image: my-oracle
container_name: my-oracle
volumes:
- ./db:/u01/app/oracle:rw
ports:
- 1527:1521
- 10000:8080
environment:
- DBCA_TOTAL_MEMORY=1024
老实说,我完全失去了对此的诊断。如果这种情况都失败了,我会有更多的线索,但我不知道为什么会这样。也许我的按字母顺序"假设是完全错误的。此外,将所有内容放在一个文件当然可以解决这个问题,但我希望将所有内容按目的/关注分开。
你能帮我一把吗?
谢谢!