I have the following Dockerfile:
FROM python:3.7-alpine
WORKDIR /msa-app/
EXPOSE 3000
ENV LD_LIBRARY_PATH="/usr/local/lib"
ENV LD_RUN_PATH="/usr/local/lib"
ENV SAPNWRFC_HOME="/usr/local/sap/nwrfcsdk"
ENV PATH="${PATH}:/usr/sap/nwrfcsdk/lib"
COPY nwrfcsdk/nwrfcsdk /usr/local/sap/nwrfcsdk
COPY nwrfcsdk/nwrfcsdk.conf /etc/ld.so.conf.d/nwrfcsdk.conf
COPY msa-app /msa-app/
RUN chmod +x /msa-app/entrypoint.sh
ENTRYPOINT /msa-app/entrypoint.sh
With the following entrypoint.sh (I put everything in entrypoint due to proxy issues inside the network that I'm using - don't blame me, it's the only way that I found to fix an issue):
#!/bin/sh
#Creates and activates virtual env
echo "*** Activating Python virtual environment"
python -m venv /msa-app/venv && source /msa-app/venv/bin/activate
echo "*** Installing pip requirements"
pip install --upgrade pip && pip install -r /msa-app/requirements.txt
echo "*** Installing pyrfc"
pip install /msa-app/pyrfc-1.9.95-cp37-cp37m-linux_x86_64.whl
echo "*** Configuring SAPNWRFC PyRFC"
ln -s /usr/bin/python3 python
mkdir -p /etc/ld.so.conf.d/
mkdir -p /usr/sap/
ldconfig /usr/local/lib
#Starts gunicorn for flask
echo "*** Starting application"
cd /msa-app && gunicorn -w 2 -b 0.0.0.0:3000 run:app
But when I try to run the container I get the following error:
ImportError: Error loading shared library libsapnwrfc.so: No such file or directory (needed by /msa-app/venv/lib/python3.7/site-packages/pyrfc/_pyrfc.cpython-37m-x86_64-linux-gnu.so)
But, this error DOESN'T happens when I use the normal non-alpine Python Docker Image. What am I doing wrong? Thank you.