为什么我的 Docker-Compose 在初始化我的 oracle 数据库后卡住了,没有继续进行下一个服务?

Why is my Docker-Compose getting stuck after initializing my oracle database and doesn't proceed to the next service?

我正在尝试使用 docker compose 更新我项目的 docker,使用 Oracle Database 19c 企业版、WebLogic Server 12.1.4 和 Java Server JRE java 8. 我已经编写了一个脚本来为数据库和 weblogic 服务器创建基础图像,然后继续使用 docker-compose up 来编写我编写的 yaml。

项目结构由 oracle 基础映像组成,从 github 上的官方 oracle 映像中提取,然后我创建了自己的 Dockerfile 来扩展这些映像。我的问题出在 Oracle DB Dockerfile 上,我不确定如何继续。此时安装完成数据库后卡住了,没有继续安装weblogic,甚至没有创建单独的容器..


ENV ORACLE_PWD="password"

ENV ORACLE_SID=ORCLCDB
ENV ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
ADD db-assets /tmp/db-assets

COPY ./wait_db.sh $ORACLE_BASE/
COPY ./runDBscripts.sh $ORACLE_BASE/
COPY ./runOracle.sh $ORACLE_BASE/
COPY ./startDB.sh $ORACLE_BASE/

USER root
RUN chmod ug+x $ORACLE_BASE/*.sh      

USER oracle

RUN $ORACLE_BASE/runOracle.sh &&\
    $ORACLE_BASE/wait_db.sh && \
    $ORACLE_BASE/runDBscripts.sh
    
CMD $ORACLE_BASE/wait_db.sh

我已经尝试了很多组合来让它工作。我是否在不应该添加的地方添加了任何命令? docker-compose.yml:

version: '2'
services:

  db:
    build:
      context: db/
      dockerfile: Dockerfile
    image: oracle/database
    ports:
      - "10000:1521"
      - "10001:22"
    shm_size: 1G

  app:
    build:
      context: app/
      dockerfile: Dockerfile
    image: oracle/weblogic:12.2.1.4
    ports:
      - 10003:7001
      - 10004:7002
    depends_on:
      - db
    command: >
      /bin/bash -c "
        echo sleeping while db is starting;
        sleep 90;
        #script for starting a managed server on weblogic@
      "

我花了很多时间来尝试完成这项工作,但我真的很沮丧,我不能把它做好。任何帮助将不胜感激

找到了!我让事情变得更复杂,我的解决方案是让 Dockerfile 尽可能简单,只复制数据库脚本。并切换到用户 oracle。我也关注了这个 post 设置健康检查,一切正常。