Interactive:
docker run -it <image> /bin/bash
# https://gist.github.com/mitchwongho/11266726
Keep it running:
docker run -d centos:latest sleep infinity
# https://stackoverflow.com/a/46898038/8805423
``
docker build -t xemasiv/image:latest .
docker push xemasiv/image:latest
docker pull xemasiv/image:latest
docker run -it -d --name containerName -p 80:80 -p 443:443 xemasiv/image:latest
docker run -it -d --name containerName --mount type=bind,src=~/projectDirectory,dst=~/projectDirectory -p 80:80 -p 443:443 xemasiv/image:latest
--network=host
docker container exec -i containerName /bin/bash -c 'mkdir -p ~/.ssh && touch ~/.ssh/id_rsa'
cat ~/.ssh/id_rsa | docker container exec -i containerName /bin/bash -c 'cat > ~/.ssh/id_rsa && cat ~/.ssh/id_rsa'
docker container exec -i containerName /bin/bash -c 'chmod 700 -R ~/.ssh/ && eval "$(ssh-agent)" ; ssh-add ~/.ssh/id_rsa'
docker container exec -it containerName /bin/bash -c "cd ~/ && git clone <YOUR_REPO>"
docker container exec -it containerName /bin/bash -c "cd ~/projectDirectory && npm install"
docker container exec -it containerName /bin/bash -c "cd ~/projectDirectory && pm2 start index.js --name pm2-instance"
FROM xemasiv/node-env
WORKDIR ~/
# PM2 installation
RUN npm install pm2@latest -g
# PM@ authbind configuration
# http://pm2.keymetrics.io/docs/usage/specifics/
RUN sudo apt-get update && apt-get install authbind -y --no-install-recommends
RUN touch /etc/authbind/byport/80
RUN chown node /etc/authbind/byport/80
RUN chmod 755 /etc/authbind/byport/80
RUN touch /etc/authbind/byport/443
RUN chown node /etc/authbind/byport/443
RUN chmod 755 /etc/authbind/byport/443
RUN echo 'alias pm2="authbind --deep pm2"' >> ~/.bashrc
RUN authbind --deep pm2 update
# Expose ports 80 & 443 for HTTP & HTTPS
EXPOSE 80
EXPOSE 443
# Clean-up again
RUN apt-get autoremove -y && \
apt-get autoclean && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
CMD [ "/bin/bash" ]
It's a modified version of TailorBrands' version, with the following changes:
docker pull xemasiv/node-env
docker run -it -d xemasiv/node-env
docker container ls
--> to get the container namedocker attach <container_name>
node -v && npm -v && vips -v
node
--> takes you to node clirequire('sharp')
--> should return the sharp function itself.FROM node:latest
# GCC @ https://github.com/wanglilong007/debian-jessie-gcc/blob/master/Dockerfile
# LIBVIPS @ https://github.com/TailorBrands
# node:latest @ https://github.com/nodejs/docker-node
# apt-utls @ https://github.com/phusion/baseimage-docker/issues/319#issuecomment-245857919
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
automake build-essential curl gobject-introspection \
gtk-doc-tools libglib2.0-dev libturbojpeg1-dev libpng12-dev \
libwebp-dev libtiff5-dev libgif-dev libexif-dev libxml2-dev \
libpoppler-glib-dev swig libmagickwand-dev libpango1.0-dev \
libmatio-dev libopenslide-dev libcfitsio3-dev libgsf-1-dev \
fftw3-dev liborc-0.4-dev librsvg2-dev gobject-introspection \
gcc wget make g++ openssl libssl-dev libpcre3 libpcre3-dev zlib1g zlib1g-dev \
nano sudo
# install sudo & nano etc.
ENV LIBVIPS_VERSION_MAJOR 8
ENV LIBVIPS_VERSION_MINOR 5
ENV LIBVIPS_VERSION_PATCH 5
# We set this to 5 to match the sharp lib, but it's interchangeable anyways with later versions.
ENV LIBVIPS_VERSION $LIBVIPS_VERSION_MAJOR.$LIBVIPS_VERSION_MINOR.$LIBVIPS_VERSION_PATCH
RUN cd /tmp && \
curl -L -O https://github.com/jcupitt/libvips/releases/download/v$LIBVIPS_VERSION/vips-$LIBVIPS_VERSION.tar.gz && \
tar zxvf vips-$LIBVIPS_VERSION.tar.gz && \
cd /tmp/vips-$LIBVIPS_VERSION && \
./configure --enable-debug=no --without-python $1 && \
make && \
make install && \
ldconfig
# Build libvips
RUN chown -R node:node /usr/local/lib/node_modules && chown -R node:node /usr/local/bin
# We chown the folders so we can npm install --global flawlessly
# https://github.com/me-ventures/angular-cli-docker/blob/master/Dockerfile
RUN sudo -u node npm install sharp --global
# You can't switch to another user, but you can run as another user.
# https://unix.stackexchange.com/a/3572
RUN echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bashrc
# Setting node path in env is now mandatory export NODE_PATH thru ~/.bashrc
# https://askubuntu.com/a/438170
# https://stackoverflow.com/questions/15636367/nodejs-require-a-global-module-package#comment31655957_15646750
RUN apt-get remove -y automake curl build-essential && \
apt-get autoremove -y && \
apt-get autoclean && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Clean-up.
CMD [ "/bin/bash" ]