gikoha’s blog

個人的メモがわり

Oracle OCIの利用(2)

実はOCI上で開発する意義はまったくなく、コンパイラソースコードをサーバーに置いておく意味はない

そういった意味で、開発環境をDockerで整え、コンパイルしたバイナリのみをサーバーに置いておく方がセキュリティ上も安全

goが使えるDocker環境を整えた

Dockerfile

FROM oraclelinux:7.8

# opc用開発環境イメージ作成用dockerfile

# イメージ作成
# docker build . -t opclinux
# 実行:(port 3000 を開発でテストする場合)
# docker run -d -it -p 3000:3000 --name opclinux -v /Users/XXXXX/Library/Mobile\ Documents/com~apple~CloudDocs/Develop:/home/opc/Develop opclinux
# 削除
# docker stop opclinux ;  docker container rm opclinux ;  docker rmi opclinux

RUN yum install -y tcsh && \
yum install -y sudo && \
yum install -y oracle-golang-release-el7 && \
yum install -y golang && \
yum install -y git && \
yum -y install oracle-release-el7 && \
yum -y install oracle-instantclient19.6-basic  && \
yum -y install oracle-instantclient19.6-odbc && \
yum -y install oracle-instantclient19.6-devel && \
yum -y install zip unzip  && \
useradd opc -g wheel  && \
mkdir /home/opc/Develop

# yum -y install oracle-instantclient19.6-sqlplus  && \
# yum -y install oracle-instantclient19.6-jdbc && \
# yum -y install oracle-instantclient19.6-tools && \


COPY profile /etc/profile.d/oracle.profile.sh
COPY oci8.pc /usr/lib/oracle/19.6/client64/lib
COPY Wallet_XXXXX.zip /root
RUN cd /usr/lib/oracle/19.6/client64/lib/network/admin/ && \
   unzip -oq /root/Wallet_XXXXX.zip

USER opc
ENV ORACLE_HOME /usr/lib/oracle/19.6/client64/lib
ENV NLS_LANG JAPANESE_JAPAN.AL32UTF8
ENV TNS_ADMIN $ORACLE_HOME/network/admin
ENV PKG_CONFIG_PATH $ORACLE_HOME
ENV GO111MODULE on

USER root

profile

export GO111MODULE=on
export ORACLE_HOME=/usr/lib/oracle/19.6/client64/lib
export NLS_LANG=JAPANESE_JAPAN.AL32UTF8
export TNS_ADMIN="$ORACLE_HOME/network/admin"
export PKG_CONFIG_PATH=$ORACLE_HOME

oci8.pc

libdir=/usr/lib/oracle/19.6/client64/lib
includedir=/usr/include/oracle/19.6/client64
glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums
Name: oci8
Description: oci8 library
Libs: -L${libdir} -lclntsh
Cflags: -I${includedir}
Version: 19.6