у меня проблема в том, что 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 в вашем образе 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 существует в каталоге, как и должно быть?
sqplus работает только тогда, когда я захожу в нужную папку вручную и бросаю ее. после того, как он встречается везде, но в остальном он не найден
@taveced, в какую папку вы заходите (например, абсолютный путь)? Используете ли вы bash внутри контейнера? Правильно ли получен bash.bashrc? Какая среда при подключении к контейнеру?
Я использую bash внутри контейнера.
я подключаюсь к docker exec -it 468465d048a4 /bin/bash
строка правильно добавлена в bashrc. как вы npw правильно получаете bash.bashrc
@taveced при подключении, правильно ли указан $PATH? например включает ли он путь к $ ORACLE_HOME/bin? Все ли переменные среды, связанные с оракулом, присутствуют в пользовательской среде (вы можете проверить с помощью команды «env»)? Если это не так, это означает, что файл bash.bashrc не используется при подключении к контейнеру.
Я думаю, что файл .he bash.bashrc не загружается при подключении к контейнеру. Теперь вы знаете, как его получить?
@taveced Я обновил пример Dockerfile, включив в него абсолютные пути на тот случай, если проблема в этом. Использование переменных среды настройки образа FROM ubuntu:18.04 в /etc/bash.bashrc не кажется проблемой, например. переменные существуют в пользовательской среде при запуске bash внутри контейнера. Каков абсолютный путь к sqlplus при подключении к контейнеру? Что расширяет образ registry-innersource.soprasteria.com/sib/docker/db-oracle-12.2.0.1? например не является общедоступным образом, не может загрузить копию для тестирования.
это база данных оракула на докере. я только изменил имя и добавил на свой github
@taveced Я использую пользовательскую сборку образа Oracle DB Docker Hub (стандартная версия с одним экземпляром — github.com/oracle/docker-images/tree/master/OracleDatabase/…), установка базы данных выполняется в /opt/oracle/product/12.2.0.1/dbhome_1, вам необходимо убедиться, что среда правильная, например. что пути, заданные для переменных среды Oracle, верны. Если вы не можете ответить "какой абсолютный путь к sqlplus при подключении к контейнеру?" то, к сожалению, я больше не могу помочь.
это oracle_home , а не весь путь к двоичному файлу sqlplus . ORACLE_HOME=/u01/приложение/оракул/продукт/12.2.0/dbhome_1/