Невозможно запустить SQL-скрипт после запуска Docker-контейнера с Oracle XE - PullRequest
0 голосов
/ 08 октября 2018

Я хочу запустить Docker-контейнер с Oracle XE, а затем запустить сценарий SQL (ddl.sql), чтобы создать несколько таблиц в docker-compose.

Если я выполняю все шаги по отдельности, все работает:

$ 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

Запустить терминал в контейнере:

$ docker exec -it db bash

Выполнить скрипт:

root@f3ae34d554af:/# echo exit | sqlplus system/oracle@xe @/home/vpk/ddl.sql

Однако, когда я попытался запустить все через docker-compose (выдержка из YML ниже)

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

Я получил ошибку:

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

root@558a4c1f74b9:/# whereis sqlplus
sqlplus: /u01/app/oracle/product/11.2.0/xe/bin/sqlplus

и вставил его в docker-compose

$ 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?

1 Ответ

0 голосов
/ 08 октября 2018

Попробуйте использовать следующее в файле docker-compose:

command: ["/bin/bash", "-c", "sqlplus system/oracle@xe @/home/vpk/ddl.sql"]

У вас нет среды без оболочки, поэтому вызывайте ее напрямую

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...