java - 使用docker文件在Oracle初始化期间初始化架构

我正在使用Docker进行一些POC,以使用Tomcat和Oracle XE数据库设置工作环境。我可以使用URL https://hub.docker.com/r/sath89/oracle-xe-11g/~/dockerfile/中的dockerfile创建Oracle XE镜像,但是我的要求是使用Docker不可知论的方法在Oracle启动期间初始化模式。

我已经尝试过下面的sh文件来访问 .sql 文件,该文件到目前为止包含一个插入脚本(而不是模式创建)。

以下是我的dbsetup.sh文件:

#!/bin/sh
echo "Starting file execution"
date
sqlplus -s system/oracle  << EOF >> D:/java/sql@DbScripts.sql
EOF
echo "Completed execution"
echo "Date is : 'date'"

DbScripts.sql:

INSERT INTO PRODUCTS VALUES(75340,'PRODUCT2','CATEGORY2');

最佳答案

使用此Dockerfile。使用以下命令构建docker镜像:

bash ./buildDockerImage.sh -v 18.4.0 -i -x
启动容器;然后,您可以使用以下命令执行脚本:
docker exec -t --user oracle <container_id> bash -c "echo exit | sqlplus system/oracle @<path_to_your_script>DbScripts.sql"
请注意,要使其正常工作,您将需要将卷挂载到脚本的位置。

https://stackoverflow.com/questions/32033998/

相关文章:

hadoop - hdfs:现有文件上的 “No such file or directory”

hadoop - hadoop 目录与 hadoop-x.x.x 有何不同

hadoop - 如何编辑Hadoop存储日志文件的位置?

apache-spark - yarn 服务器重启后如何在Spark Web-UI中保留完成的应用程

hadoop - 向我现有的集群添加自动故障转移?

apache-spark - 多次运行时在同一组数据上不同的Pyspark代码输出

hadoop - hbase completebulkload长时间运行

logging - 如何在Postfix(3)中更改(syslog)日志目标以用于Docker

docker - 如何在家庭 Web 服务器上托管 Ghost 博客

docker - Docker构建输入/输出错误