Docker和docker之间的不同行为 - 在Oracle DB映像中构成

时间:2018-03-12 15:00:52

标签: oracle docker docker-compose

在某个项目中,我们使用此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

老实说,我完全失去了对此的诊断。如果这种情况都失败了,我会有更多的线索,但我不知道为什么会这样。也许我的按字母顺序"假设是完全错误的。此外,将所有内容放在一个文件当然可以解决这个问题,但我希望将所有内容按目的/关注分开。

你能帮我一把吗?

谢谢!

0 个答案:

没有答案