Docker setup – part 3: setting up a simple Continuous Deployment pipeline using bitbucket and docker

This part ended up being a lot more involved and much longer than I expected. In this part my goal was to make the production deployment process smoother, make it easier to do development on the setup and prepare it to be more redundant.

Before I started, the production deploy process was to connect my IDE(phpstorm), with it’s docker-compose integration, to my remote docker and run a “docker-compose up”. This workflow has some drawbacks

  • It is easy to deploy to production by error since it is only a single click in the wrong place – so I can’t be sure that the running version maps to a specific revision in my git
  • When I deploy, the containers are taken down until the new containers are booted, causing service disruption
  • There are no easy way to do a revert, if I deploy a setup with errors, it is a manual process to revert it to a previous version
  • I would like to work with Continuous Integration / Continuous Deployment (CI/CD) as a pipeline for a more smooth workflow which requires a more tight control of the process
  • I don’t have an easy way control differences between development and production
  • Also I would like to prepare to work with replicated services where the service would have a fall over if an error crashes a container.

Much of this part are to prepare the setup to solve the challenges above. I did not manage to solve all of the problems up front, which disappointed me a bit, but it will be solved in later parts.

Continue reading “Docker setup – part 3: setting up a simple Continuous Deployment pipeline using bitbucket and docker”

Docker setup – part 1: Setting up state of the art infrastructure for personal projects

My day-job is developing and managing websites and e-commerce platforms, so I know the importance of stability and scalability on web platforms and technology in general. This is also true when working with my personal projects. For some time I have wanted to push my projects to the cloud so I can more easily utilize the scalability there. Also I only have a laptop, and I don’t want a desktop computer to take space, collect dust and consume power. Hardware also gets old and needs to be maintained. All those worries I would like to skip.

My goal is to setup a platform that will do a few things for me:

  • Allow me to run my blog – this site
  • Allow me to run my girlfriends blog – this site
  • Be easy to update wordpress since it is known to have security issues in older versions
  • Have good backup
  • Alert me if/when the sites are down
  • Alert me if/when the sites experience high load
  • Protect the sites against ddos and similar attacks
  • Provide me with a coherent platform for all my projects both web and data analysis
  • Be a learning platform for new technology in cloud computing

Lofty goals but I hope to setup a platform that will service me for many years.

 

Continue reading “Docker setup – part 1: Setting up state of the art infrastructure for personal projects”