Sqlplus не работает в докере

у меня проблема в том, что sqlplus не найден в моей базе данных оракула докеров. можешь мне помочь. у меня всегда sh: sqlplus: команда не найдена я пытаюсь сделать базу данных докеров; я новичок в докере я пробовал:

ENV ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/bin/sqlplus
RUN echo 'export ORACLE_HOME=u01/app/oracle/product/12.2.0/dbhome_1/bin/sqlplus' >> etc/bash.bashrc
RUN echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> /etc/bash.bashrc

FROM registry-innersource.soprasteria.com/sib/docker/db-oracle-12.2.0.1

# Set Environment Variables
ENV SYS_USER SYS
ENV SYS_PASSW password
ENV JAVA_HOME /jdk1.8.0_201
ENV ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/bin/sqlplus

COPY DB_SIB_SET_OS_COMMON_VARIABLES.sh /u01/oracle/
COPY 2_create_tablespaces.sh /u01/oracle/
COPY 3_setup_SIB.sh /u01/oracle/
COPY apache-jmeter-5.0 /u01/jmeter/
COPY JmeterScenario /u01/jmeter/JmeterScenario
COPY jdk-8u201-linux-x64.tar.gz /u01/java/
COPY Environment /Environment
COPY _util /_util
USER root
RUN chmod a+xr /u01/java/
RUN chmod 777 /_util

RUN echo 'export ORACLE_HOME=u01/app/oracle/product/12.2.0/dbhome_1/bin/sqlplus' >> etc/bash.bashrc
RUN echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> /etc/bash.bashrc

RUN u01/oracle/1_initialise_SIB.sh 2>&1 | tee /tmp/1_initialise_SIB.log
RUN u01/oracle/2_create_tablespaces.sh 2>&1 | tee /tmp/2_create_tablespaces.log
RUN u01/oracle/3_setup_SIB.sh 2>&1 | tee /tmp/3_setup_SIB.log
USER root
RUN chmod a+xr /u01/java/
RUN chmod 777 /_util
RUN tar xzf /u01/java/jdk-8u201-linux-x64.tar.gz

#RUN u01/jmeter/bin/jmeter -n -t u01/jmeter/JmeterScenario/Load_CSBroadcasts_FR.jmx

the error is always :
sh: sqlplus: command not found

это oracle_home , а не весь путь к двоичному файлу sqlplus . ORACLE_HOME=/u01/приложение/оракул/продукт/12.2.0/dbhome_1/

Kris Rice 30.01.2019 16:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
1 029
1

Ответы 1

Предполагая, что установка Oracle в вашем образе registry-innersource.soprasteria.com/sib/docker/db-oracle-12.2.0.1 завершена и пути указаны правильно, переменные среды Oracle будут следующими:

ENV ORACLE_BASE=/u01/app/oracle
ENV ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
ENV PATH=$PATH:/u01/app/oracle/product/12.2.0/dbhome_1/bin
ENV TNS_ADMIN=/u01/app/oracle/product/12.2.0/dbhome_1/network/admin

Пересмотренный Dockerfile может быть, например:

FROM registry-innersource.soprasteria.com/sib/docker/db-oracle-12.2.0.1

ENV ORACLE_BASE=/u01/app/oracle
ENV ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
ENV TNS_ADMIN=/u01/app/oracle/product/12.2.0/dbhome_1/network/admin
ENV PATH=$PATH:/u01/app/oracle/product/12.2.0/dbhome_1/bin

RUN echo 'export ORACLE_BASE=/u01/app/oracle' >> /etc/bash.bashrc
RUN echo 'export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1' >> /etc/bash.bashrc
RUN echo 'export TNS_ADMIN=$ORACLE_HOME/network/admin' >> /etc/bash.bashrc
RUN echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> /etc/bash.bashrc

# Set Environment Variables
ENV SYS_USER SYS
ENV SYS_PASSW password
ENV JAVA_HOME /jdk1.8.0_201

COPY DB_SIB_SET_OS_COMMON_VARIABLES.sh /u01/oracle/
COPY 2_create_tablespaces.sh /u01/oracle/
COPY 3_setup_SIB.sh /u01/oracle/
COPY apache-jmeter-5.0 /u01/jmeter/
COPY JmeterScenario /u01/jmeter/JmeterScenario
COPY jdk-8u201-linux-x64.tar.gz /u01/java/
COPY Environment /Environment
COPY _util /_util
USER root
RUN chmod a+xr /u01/java/
RUN chmod 777 /_util

RUN /u01/oracle/1_initialise_SIB.sh 2>&1 | tee /tmp/1_initialise_SIB.log
RUN /u01/oracle/2_create_tablespaces.sh 2>&1 | tee /tmp/2_create_tablespaces.log
RUN /u01/oracle/3_setup_SIB.sh 2>&1 | tee /tmp/3_setup_SIB.log
USER root
RUN chmod a+xr /u01/java/
RUN chmod 777 /_util
RUN tar xzf /u01/java/jdk-8u201-linux-x64.tar.gz

Примечание: удалено дублирование добавления RUN к /etc/bash.bashrc. Кроме того, невозможность найти команду sqlplus является ошибкой конфигурации, требует знания конфигурации базы данных Oracle/операционной системы, а не docker, например (ошибка не специфична для docker).

@taveced можете ли вы открыть оболочку внутри контейнера и убедиться, что установка базы данных выполнена правильно, пути указаны правильно и что двоичный файл sqlplus существует в каталоге, как и должно быть?

masseyb 31.01.2019 13:20

sqplus работает только тогда, когда я захожу в нужную папку вручную и бросаю ее. после того, как он встречается везде, но в остальном он не найден

taveced 04.02.2019 11:49

@taveced, в какую папку вы заходите (например, абсолютный путь)? Используете ли вы bash внутри контейнера? Правильно ли получен bash.bashrc? Какая среда при подключении к контейнеру?

masseyb 04.02.2019 11:56

Я использую bash внутри контейнера.

taveced 04.02.2019 12:00

я подключаюсь к docker exec -it 468465d048a4 /bin/bash

taveced 04.02.2019 12:00

строка правильно добавлена ​​в bashrc. как вы npw правильно получаете bash.bashrc

taveced 04.02.2019 12:01

@taveced при подключении, правильно ли указан $PATH? например включает ли он путь к $ ORACLE_HOME/bin? Все ли переменные среды, связанные с оракулом, присутствуют в пользовательской среде (вы можете проверить с помощью команды «env»)? Если это не так, это означает, что файл bash.bashrc не используется при подключении к контейнеру.

masseyb 04.02.2019 12:06

Я думаю, что файл .he bash.bashrc не загружается при подключении к контейнеру. Теперь вы знаете, как его получить?

taveced 05.02.2019 10:00

@taveced Я обновил пример Dockerfile, включив в него абсолютные пути на тот случай, если проблема в этом. Использование переменных среды настройки образа FROM ubuntu:18.04 в /etc/bash.bashrc не кажется проблемой, например. переменные существуют в пользовательской среде при запуске bash внутри контейнера. Каков абсолютный путь к sqlplus при подключении к контейнеру? Что расширяет образ registry-innersource.soprasteria.com/sib/docker/db-oracle-12‌​.2.0.1? например не является общедоступным образом, не может загрузить копию для тестирования.

masseyb 05.02.2019 13:30

это база данных оракула на докере. я только изменил имя и добавил на свой github

taveced 05.02.2019 15:42

@taveced Я использую пользовательскую сборку образа Oracle DB Docker Hub (стандартная версия с одним экземпляром — github.com/oracle/docker-images/tree/master/OracleDatabase/…‌​), установка базы данных выполняется в /opt/oracle/product/12.2.0.1/dbhome_1, вам необходимо убедиться, что среда правильная, например. что пути, заданные для переменных среды Oracle, верны. Если вы не можете ответить "какой абсолютный путь к sqlplus при подключении к контейнеру?" то, к сожалению, я больше не могу помочь.

masseyb 05.02.2019 15:51

Другие вопросы по теме