Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

issue-1 Remove /opt/senzing dependency #7

Merged
merged 1 commit into from
Apr 3, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 3 additions & 157 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,36 +1,4 @@
ARG BASE_IMAGE=debian:9

# -----------------------------------------------------------------------------
# Stage: db2_builder
# -----------------------------------------------------------------------------

FROM ${BASE_IMAGE} as db2_builder

ENV REFRESHED_AT=2019-03-22

LABEL Name="senzing/senzing-base-db2-builder" \
Version="1.0.0"

# Install packages via apt.

RUN apt-get update \
&& apt-get -y install \
unzip

# Copy the DB2 ODBC client code.
# The tar.gz files must be independently downloaded before the docker build.

ADD ./downloads/ibm_data_server_driver_for_odbc_cli_linuxx64_v11.1.tar.gz /opt/IBM/db2
ADD ./downloads/v11.1.4fp4a_jdbc_sqlj.tar.gz /tmp/db2-jdbc-sqlj

# Extract ZIP file.

RUN unzip -d /tmp/extracted-jdbc /tmp/db2-jdbc-sqlj/jdbc_sqlj/db2_db2driver_for_jdbc_sqlj.zip

# -----------------------------------------------------------------------------
# Final stage
# -----------------------------------------------------------------------------

FROM ${BASE_IMAGE}

ENV REFRESHED_AT=2019-03-22
Expand Down Expand Up @@ -58,146 +26,24 @@ RUN apt-get update \
wget \
&& rm -rf /var/lib/apt/lists/*

# Install libmysqlclient21.

ENV DEBIAN_FRONTEND=noninteractive

# RUN wget -qO - https://repo.mysql.com/RPM-GPG-KEY-mysql | apt-key add - \
# && wget https://repo.mysql.com/mysql-apt-config_0.8.11-1_all.deb \
# && dpkg --install mysql-apt-config_0.8.11-1_all.deb \
# && apt-get update \
# && apt-get -y install libmysqlclient21 \
# && rm mysql-apt-config_0.8.11-1_all.deb \
# && rm -rf /var/lib/apt/lists/*

# Create MySQL connector.
# References:
# - https://dev.mysql.com/downloads/connector/odbc/
# - https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-installation-binary-unix-tarball.html

# RUN wget https://cdn.mysql.com//Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.13-linux-ubuntu18.04-x86-64bit.tar.gz \
# && tar -xvf mysql-connector-odbc-8.0.13-linux-ubuntu18.04-x86-64bit.tar.gz \
# && cp mysql-connector-odbc-8.0.13-linux-ubuntu18.04-x86-64bit/lib/* /usr/lib/x86_64-linux-gnu/odbc/ \
# && mysql-connector-odbc-8.0.13-linux-ubuntu18.04-x86-64bit/bin/myodbc-installer -d -a -n "MySQL" -t "DRIVER=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so;" \
# && rm mysql-connector-odbc-8.0.13-linux-ubuntu18.04-x86-64bit.tar.gz \
# && rm -rf mysql-connector-odbc-8.0.13-linux-ubuntu18.04-x86-64bit

# Install packages via pip.

RUN pip install \
psutil \
pyodbc

# Copy files from "db2_builder" stage.

COPY --from=db2_builder [ \
"/opt/IBM/db2/clidriver/adm/db2trc", \
"/opt/IBM/db2/clidriver/adm/" \
]

COPY --from=db2_builder [ \
"/opt/IBM/db2/clidriver/bin/db2dsdcfgfill", \
"/opt/IBM/db2/clidriver/bin/db2ldcfg", \
"/opt/IBM/db2/clidriver/bin/db2lddrg", \
"/opt/IBM/db2/clidriver/bin/db2level", \
"/opt/IBM/db2/clidriver/bin/" \
]

COPY --from=db2_builder [ \
"/opt/IBM/db2/clidriver/cfg/db2cli.ini.sample", \
"/opt/IBM/db2/clidriver/cfg/db2dsdriver.cfg.sample", \
"/opt/IBM/db2/clidriver/cfg/db2dsdriver.xsd", \
"/opt/IBM/db2/clidriver/cfg/" \
]

COPY --from=db2_builder [ \
"/opt/IBM/db2/clidriver/conv/alt/08501252.cnv", \
"/opt/IBM/db2/clidriver/conv/alt/12520850.cnv", \
"/opt/IBM/db2/clidriver/conv/alt/IBM00850.ucs", \
"/opt/IBM/db2/clidriver/conv/alt/IBM01252.ucs", \
"/opt/IBM/db2/clidriver/conv/alt/" \
]

COPY --from=db2_builder [ \
"/opt/IBM/db2/clidriver/include/sqlcli1.h", \
"/opt/IBM/db2/clidriver/include/sqlsystm.h", \
"/opt/IBM/db2/clidriver/include/sqlca.h", \
"/opt/IBM/db2/clidriver/include/sqlcli.h", \
"/opt/IBM/db2/clidriver/include/sql.h", \
"/opt/IBM/db2/clidriver/include/" \
]

COPY --from=db2_builder [ \
"/opt/IBM/db2/clidriver/lib/libdb2.so.1", \
"/opt/IBM/db2/clidriver/lib/libdb2o.so.1", \
"/opt/IBM/db2/clidriver/lib/" \
]

COPY --from=db2_builder [ \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/db2admh.mo", \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/db2adm.mo", \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/db2clia1.lst", \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/db2clias.lst", \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/db2clih.mo", \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/db2cli.mo", \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/db2clit.mo", \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/db2clp.mo", \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/db2diag.mo", \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/db2sqlh.mo", \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/db2sql.mo", \
"/opt/IBM/db2/clidriver/msg/en_US.iso88591/" \
]

COPY --from=db2_builder [ \
"/tmp/extracted-jdbc/db2jcc.jar", \
"/tmp/extracted-jdbc/db2jcc4.jar", \
"/tmp/extracted-jdbc/sqlj.zip", \
"/tmp/extracted-jdbc/sqlj4.zip", \
"/opt/IBM/db2/jdbc/" \
]

# FIXME: The following files have not yet been approved for distribution, but are necessary.
# Once the files are approved for distribution:
# 1) db2dsdriver.cfg: Remove "Authentication" and "SecurityTransportMode" parameters.
# 2) Remove "RUN touch /opt/IBM/db2/clidriver/bin/crypto_not_installed" from this Dockerfile.

#COPY --from=db2_builder [ \
# "/opt/IBM/db2/clidriver/lib/icc/libgsk8cms_64.so", \
# "/opt/IBM/db2/clidriver/lib/icc/libgsk8iccs_64.so", \
# "/opt/IBM/db2/clidriver/lib/icc/libgsk8km_64.so", \
# "/opt/IBM/db2/clidriver/lib/icc/libgsk8ssl_64.so", \
# "/opt/IBM/db2/clidriver/lib/icc/libgsk8sys_64.so", \
# "/opt/IBM/db2/clidriver/lib/icc/" \
# ]

#COPY --from=db2_builder [ \
# "/opt/IBM/db2/clidriver/lib/icc/C/icc/icclib/ICCSIG.txt", \
# "/opt/IBM/db2/clidriver/lib/icc/C/icc/icclib/libicclib084.so", \
# "/opt/IBM/db2/clidriver/lib/icc/C/icc/icclib/" \
# ]

# FIXME: For testing only.

# COPY --from=db2_builder /opt/IBM/db2 /opt/IBM/db2

# Set environment variables.

ENV SENZING_ROOT=/opt/senzing
ENV PYTHONPATH=${SENZING_ROOT}/g2/python
ENV LD_LIBRARY_PATH=${SENZING_ROOT}/g2/lib:${SENZING_ROOT}/g2/lib/debian:/opt/IBM/db2/clidriver/lib
ENV DB2_CLI_DRIVER_INSTALL_PATH=/opt/IBM/db2/clidriver
ENV PATH=$PATH:/opt/IBM/db2/clidriver/adm:/opt/IBM/db2/clidriver/bin
ENV LD_LIBRARY_PATH=${SENZING_ROOT}/g2/lib:${SENZING_ROOT}/g2/lib/debian:${SENZING_ROOT}/db2/clidriver/lib
ENV DB2_CLI_DRIVER_INSTALL_PATH=${SENZING_ROOT}/db2/clidriver
ENV PATH=$PATH:${SENZING_ROOT}/db2/clidriver/adm:${SENZING_ROOT}/db2/clidriver/bin

# Copy files from repository.

COPY ./rootfs /

# Create files and links.

RUN touch /opt/IBM/db2/clidriver/bin/crypto_not_installed \
&& ln -s /opt/IBM/db2/clidriver/lib/libdb2.so.1 /opt/IBM/db2/clidriver/lib/libdb2.so \
&& ln -s /opt/IBM/db2/clidriver/lib/libdb2o.so.1 /opt/IBM/db2/clidriver/lib/libdb2o.so

# Runtime execution.

ENTRYPOINT ["/app/docker-entrypoint.sh"]
Expand Down
21 changes: 1 addition & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ building apps with Senzing.
To see how to use the `senzing/senzing-base` docker image, see
[github.com/senzing/docker-python-demo](https://github.com/senzing/docker-python-demo).

FIXME: To see a demonstration of senzing, python, and postgresql, see
To see a demonstration of Senzing, python, and postgresql, see
[github.com/senzing/docker-compose-postgresql-demo](https://github.com/senzing/docker-compose-postgresql-demo).

### Contents
Expand Down Expand Up @@ -177,25 +177,6 @@ The following software programs need to be installed:
export GIT_REPOSITORY_DIR="${GIT_ACCOUNT_DIR}/${GIT_REPOSITORY}"
```

### Downloads

#### Download ibm_data_server_driver_for_odbc_cli_linuxx64_v11.1.tar.gz

1. Visit [Download initial Version 11.1 clients and drivers](http://www-01.ibm.com/support/docview.wss?uid=swg21385217)
1. Click on "[IBM Data Server Driver for ODBC and CLI (CLI Driver)](http://www.ibm.com/services/forms/preLogin.do?source=swg-idsoc97)" link.
1. Select :radio_button: "IBM Data Server Driver for ODBC and CLI (Linux AMD64 and Intel EM64T)"
1. Click "Continue" button.
1. Choose download method and click "Download now" button.
1. Download `ibm_data_server_driver_for_odbc_cli_linuxx64_v11.1.tar.gz` to ${GIT_REPOSITORY_DIR}/[downloads](./downloads) directory.

#### Download v11.1.4fp4a_jdbc_sqlj.tar.gz

1. Visit [DB2 JDBC Driver Versions and Downloads](http://www-01.ibm.com/support/docview.wss?uid=swg21363866)
1. In DB2 Version 11.1 > JDBC 3.0 Driver version, click on "3.72.52" link.
1. Click on "DSClients--jdbc_sqlj-11.1.4.4-FP004a" link.
1. Click on "v11.1.4fp4a_jdbc_sqlj.tar.gz" link to download.
1. Download `v11.1.4fp4a_jdbc_sqlj.tar.gz` to ${GIT_REPOSITORY_DIR}/[downloads](./downloads) directory.

### Build docker image for development

1. Variation #1 - Using `make` command.
Expand Down
5 changes: 0 additions & 5 deletions downloads/README.md

This file was deleted.

27 changes: 18 additions & 9 deletions rootfs/app/docker-entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,10 @@ if [ "${PROTOCOL}" == "mysql" ]; then
-e "s/{SCHEMA}/${SCHEMA}/" \
/etc/odbc.ini

# Prevent interactivity.

export DEBIAN_FRONTEND=noninteractive

# Install libmysqlclient21.

wget -qO - https://repo.mysql.com/RPM-GPG-KEY-mysql | apt-key add -
Expand Down Expand Up @@ -180,28 +184,22 @@ elif [ "${PROTOCOL}" == "db2" ]; then
-e "s/{SCHEMA}/${SCHEMA}/" \
/etc/odbc.ini

cp /opt/IBM/db2/clidriver/cfg/db2dsdriver.cfg.db2-template /opt/IBM/db2/clidriver/cfg/db2dsdriver.cfg
sed -i.$(date +%s) \
-e "s/{HOST}/${HOST}/" \
-e "s/{PORT}/${PORT}/" \
-e "s/{SCHEMA}/${SCHEMA}/" \
/opt/IBM/db2/clidriver/cfg/db2dsdriver.cfg

fi

# -----------------------------------------------------------------------------
# Handle common changes.
# -----------------------------------------------------------------------------

cp /etc/odbcinst.ini.template /etc/odbcinst.ini
sed -i.$(date +%s) \
-e "s|{SENZING_ROOT}|${SENZING_ROOT}|" \
/etc/odbcinst.ini

if [ ${DEBUG} -gt 0 ]; then
echo "---------- /etc/odbc.ini ------------------------------------------------------"
cat /etc/odbc.ini
echo "---------- /etc/odbcinst.ini --------------------------------------------------"
cat /etc/odbcinst.ini
echo "---------- /opt/IBM/db2/clidriver/cfg/db2dsdriver.cfg -------------------------"
cat /opt/IBM/db2/clidriver/cfg/db2dsdriver.cfg
echo "-------------------------------------------------------------------------------"
fi

Expand Down Expand Up @@ -250,6 +248,14 @@ fi
# Handle common changes.
# -----------------------------------------------------------------------------

mv ${SENZING_ROOT}/db2/clidriver/cfg/db2dsdriver.cfg ${SENZING_ROOT}/db2/clidriver/cfg/db2dsdriver.cfg.original
cp /opt/IBM/db2/clidriver/cfg/db2dsdriver.cfg.db2-template ${SENZING_ROOT}/db2/clidriver/cfg/db2dsdriver.cfg
sed -i.$(date +%s) \
-e "s/{HOST}/${HOST}/" \
-e "s/{PORT}/${PORT}/" \
-e "s/{SCHEMA}/${SCHEMA}/" \
${SENZING_ROOT}/db2/clidriver/cfg/db2dsdriver.cfg

sed -i.$(date +%s) \
-e "s|G2Connection=sqlite3://na:na@${SENZING_ROOT}/g2/sqldb/G2C.db|G2Connection=${NEW_SENZING_DATABASE_URL}|" \
${SENZING_ROOT}/g2/python/G2Project.ini
Expand All @@ -263,7 +269,10 @@ if [ ${DEBUG} -gt 0 ]; then
cat ${SENZING_ROOT}/g2/python/G2Project.ini
echo "---------- g2/python/G2Module.ini ---------------------------------------------"
cat ${SENZING_ROOT}/g2/python/G2Module.ini
echo "---------- ${SENZING_ROOT}/db2/clidriver/cfg/db2dsdriver.cfg -------------------------"
cat ${SENZING_ROOT}/db2/clidriver/cfg/db2dsdriver.cfg
echo "-------------------------------------------------------------------------------"

fi

# -----------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion rootfs/etc/odbcinst.ini.template
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[DB2]
Description = Db2 ODBC Driver
Driver = /opt/IBM/db2/clidriver/lib/libdb2o.so
Driver = {SENZING_ROOT}/db2/clidriver/lib/libdb2o.so
FileUsage = 1
dontdlclose = 1

Expand Down