多维表格
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

109 lines
3.0 KiB

FROM alpine:latest
#ENV LD_LIBRARY_PATH=/lib
ENV PORT 8080
ENV NODE_ENV=dev
# the client version we will download from bumpx repo
ENV CLIENT_FILENAME instantclient-basic-linux.x64-12.1.0.1.0.zip
# Create and change to the app directory.
WORKDIR /usr/src/appTemp
# Copy application dependency manifests to the container image.
# A wildcard is used to ensure both package.json AND package-lock.json are copied.
# Copying this separately prevents re-running npm install on every code change.
COPY ./docker/main.js ./docker/main.js
COPY ./package*.json ./
COPY ./docker/start.sh /usr/src/appEntry/start.sh
RUN apk --update --no-cache add \
nodejs \
nodejs-npm \
tar
# Install production dependencies.
RUN npm install --cache=/usr/src/app/cache --production && rm -rf /usr/src/app/cache && rm -rf /root/.npm
RUN apk del nodejs-npm
#RUN zip ./ –r ../appEntry/mydir.zip
RUN tar -czf ../appEntry/app.tar.gz ./* ; rm -rf ./*
#
#RUN wget https://download.oracle.com/otn_software/linux/instantclient/193000/instantclient-basic-linux.x64-19.3.0.0.0dbru.zip && \
# unzip instantclient-basic-linux.x64-19.3.0.0.0dbru.zip && \
# cp -r instantclient_19_3/* /lib && \
# rm -rf instantclient-basic-linux.x64-19.3.0.0.0dbru.zip && \
# apk add libaio && \
# apk add --update libaio libnsl libc6-compat
#
## ln -s /lib/libnsl.so.2 /lib/libnsl.so.1 ;\
#
#RUN ln -s /lib64/* /lib ;\
# ln -s /lib/libnsl.so.2 /usr/lib/libnsl.so.1 ;\
# ln -s /lib/libc.so /lib/libresolv.so.2 ;\
# ln -s /usr/lib/libnsl.so.2 /usr/lib/libnsl.so.1
## ln -s /lib/libclntsh.so.12.1 /lib/libclntsh.so ;
#RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \
#apk add --update libaio libnsl && \
#ln -s /usr/lib/libnsl.so.2 /lib/libnsl.so.1
# Bug fix for segfault ( Convert PT_GNU_STACK program header into PT_PAX_FLAGS )
#RUN apk --update --no-cache add paxctl \
# && paxctl -cm $(which node)
# work in this directory
WORKDIR /opt/oracle/lib
# take advantage of this repo to easily download the client (use it at your own risk)
ADD https://github.com/bumpx/oracle-instantclient/raw/master/${CLIENT_FILENAME} .
# we need libaio and libnsl, the latter is only available as package in the edge repository
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \
apk add --update libaio libnsl && \
ln -s /usr/lib/libnsl.so.2 /usr/lib/libnsl.so.1
# unzip the necessary libraries, create the base symlink and remove the zip file
RUN LIBS="*/libociei.so */libons.so */libnnz12.so */libclntshcore.so.12.1 */libclntsh.so.12.1" && \
unzip ${CLIENT_FILENAME} ${LIBS} && \
for lib in ${LIBS}; do mv ${lib} /usr/lib; done && \
ln -s /usr/lib/libclntsh.so.12.1 /usr/lib/libclntsh.so && \
rm ${CLIENT_FILENAME}
# Create and change to the app directory.
WORKDIR /usr/src/app
# Run the web service on container startup.
#CMD [ "node", "docker/index.js" ]
ENTRYPOINT ["/bin/sh", "/usr/src/appEntry/start.sh"]