首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Oracle XE启动Docker-container后无法运行SQL脚本

使用Oracle XE启动Docker-container后无法运行SQL脚本
EN

Stack Overflow用户
提问于 2018-10-08 21:35:44
回答 1查看 1.4K关注 0票数 0

我想用Oracle启动Docker-container,然后运行SQL脚本(ddl.sql)在docker-compose中创建一些表。

如果我单独执行所有步骤,一切都会正常工作:

代码语言:javascript
复制
$ docker run -d --name db --rm -p 49161:1521 -v "C:/data/workspace/vpk/":/home/vpk -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g

在容器中运行终端:

代码语言:javascript
复制
$ docker exec -it db bash

执行脚本:

代码语言:javascript
复制
root@f3ae34d554af:/# echo exit | sqlplus system/oracle@xe @/home/vpk/ddl.sql

然而,当我试图通过docker-compose运行所有东西时(以下摘录自YML )

代码语言:javascript
复制
version: "2"
services:
...
  db:
    image: wnameless/oracle-xe-11g
    container_name: vpk-db
    volumes:
      - ./ddl.sql:/home/vpk/ddl.sql
    command: sqlplus system/oracle@xe @/home/vpk/ddl.sql
    ports:
      - 49161:1521
    environment:
      - ORACLE_ALLOW_REMOTE=true
    networks:
      - default

我得到了错误:

代码语言:javascript
复制
ERROR: for 2237511031b6_vpk-db  Cannot start service db: b'OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \\"sqlplus\\": executable file not found in $PATH": unknown'

ERROR: for db  Cannot start service db: b'OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \\"sqlplus\\": executable file not found in $PATH": unknown'
Encountered errors while bringing up the project.

好的。我找到了sqlplus的完整路径。

代码语言:javascript
复制
root@558a4c1f74b9:/# whereis sqlplus
sqlplus: /u01/app/oracle/product/11.2.0/xe/bin/sqlplus

并将其插入docker-compose中

代码语言:javascript
复制
$ docker-compose.exe up
Removing vpk-db
Recreating 2237511031b6_vpk-db ... done
Attaching to vpk-db
vpk-db | Error 6 initializing SQL*Plus
vpk-db | SP2-0667: Message file sp1<lang>.msb not found
vpk-db | SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
vpk-db exited with code 1

怎么一回事?当我运行docker-compose而不仅仅是docker run ... image时,我是否需要以不同的用户身份登录?

EN

回答 1

Stack Overflow用户

发布于 2018-10-08 22:47:28

尝试在docker-compose文件中使用下一个命令:

代码语言:javascript
复制
command: ["/bin/bash", "-c", "sqlplus system/oracle@xe @/home/vpk/ddl.sql"]

没有shell就没有环境,所以直接调用它

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52703535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档