Sign inSign up

xemasiv/image

By xemasiv

Updated almost 9 years ago

Dev-ready image that extends from xemasiv/node-env.

Image
0

2.0K

xemasiv/image repository overview

Contents
  • setting of workdir to ~/ (root home)
  • PM2 Installation
  • PM2 Authbind to allow pm2 access of pm2 process instances to ports 80 & 443
  • EXPOSE port 80 & 443

Usage:
  • Build & Push:
    • docker build -t xemasiv/image:latest .
    • docker push xemasiv/image:latest
  • Pull & Initialize:
    • docker pull xemasiv/image:latest
    • No mount:
      • docker run -it -d --name containerName -p 80:80 -p 443:443 xemasiv/image:latest
    • With mount:
      • docker run -it -d --name containerName --mount type=bind,src=~/projectDirectory,dst=~/projectDirectory -p 80:80 -p 443:443 xemasiv/image:latest
    • Optional:
      • --network=host
  • Run:
    • SSH keys:
      • 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'
    • Git-clone, npm-install & pm2-restart:
      • 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"
  • Git Pull & Restart:
    • docker container exec -it server-container /bin/bash -c "cd ~/projectDirectory && git pull && pm2 restart pm2-instance"

Dockerfile contents:
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" ]

Tag summary

Content type

Image

Digest

Size

420.5 MB

Last updated

almost 9 years ago

docker pull xemasiv/image