Would You Like To Learn How To Deploy With Docker?

At the time of writing, I’m now 11 days into my journey into Docker-ising my workflow.

The idea here is to build a continious integration / continuous delivery pipeline. It sounds horrendously enterprise, but in reality it’s all about removing the friction involved in getting working code into production as easily as possible.

As a quick re-cap, what I’m trying to achieve is roughly:

  • Develop locally using Docker;
  • Commit code, and push up to GitLab;
  • For each commit, GitLab will perform a checkout of my code, build up the environment (using Docker), and run my automated test suite;
  • If the tests pass, then the Docker image should be stored into my private GitLab Container Registry (or to you and me, store the Docker image on my private GitLab server, rather than publicly e.g. on dockerhub);
  • Assuming I am happy with everything, I can then pull this image to my production environment and replace the running container with the new one.

For this last step I’m looking at using Rancher.

Honestly, even just writing that out makes it sound tricky.

In practice, it’s been… a bloomin’ nightmare.

As I say, I’m 11 days into this. 11 days that is, without writing any code on the project that actually matters.

I genuinely believe this entire process will be worth it. Once it all works – and believe me, I will make this work even if it dangerously shortens my life expectancy – then I can roll this out not just to my current project, but to every project. And not just projects that use PHP either.

And that’s a huge win for me. That’s why I’m persisting with it.

I asked last week if anyone had any experience with this. Somewhat unsurprisingly, I got zero replies 🙂

Now, this may be because no one reads what I write. It’s highly probable. However, MailChimp gives me stats and the stats say that at least some of you do read these emails 🙂 Thanks!

Anyway, my take away from this is that if no one replied, either it’s because no one has experience doing this (and judging by how much pain I’m going through, I don’t blame you), or maybe it’s just not interesting to you.

I’d be up for doing a series on this for CodeReviewVideos once I have a working setup. It should shave a ton of time of the process if you are interested, but don’t have the time / desire to invest 11+ days of your life into a similar setup.

I would be extremely grateful if you could reply and let me know if this is a video tutorial series that would interest you.

I hope that in next week’s email I can say that I have a working solution.

Video Update

This week there have been three new videos added to the site.

I’m not going to link to each of the individual videos in this instance, but rather only to the first as they follow on logically from each other:

https://codereviewvideos.com/course/react-redux-and-redux-saga-with-symfony-3/video/registration-part-1

In this final part of the “React, Redux, and Redux Saga With Symfony 3” we wrap up by adding in Registration.

Previously when dealing with registration I have felt a little overwhelmed. From a very high level, it’s a form like any other.

But in reality it’s one of the most important forms on your site. It’s a core piece of the first impression a (potential) customer will have. You need to get it right.

Fortunately though, we’ve already done the vast majority of the hard work.

We have a set of re-usable components we can call upon, such as the repeated password entry field, and our styled form field.

We have a set process to follow, where we create a container, then a component to hold our form. We create our functions and pass them in, which will dispatch the right messages when interesting things happen. It’s all stuff we’ve covered throughout this series.

Finally we cover how to work with both the happy path, and the unhappy paths. We cover how to display helpful form errors to guide the user through as and when things go wrong.

And at the end of all this we have a working registration system that’s useful regardless of the type of app you’re creating. Without too much extra effort this system can be expanded upon to add in a payment processor – such as Stripe. I know, as this is exactly the same setup that’s being used in the forthcoming update of CodeReviewVideos 🙂

Blog Update

This week I blogged about getting RabbitMQ working with Docker:

The Baffling World Of RabbitMQ and Docker

That’s it from me this week. Until next week, happy coding 🙂

Chris

Shares

Published by

Code Review

Code Review

CodeReviewVideos is a video training site helping software developers learn Symfony faster and easier.

4 thoughts on “Would You Like To Learn How To Deploy With Docker?”

    1. Thanks Andreas. I think this could be fairly useful info regardless of whether you’re deploying a Symfony stack, Laravel, or even a totally different language. Actually, from what I gather, it’s probably a little easier if you are deploying the output from a compiled language, e.g. Go.

      I’m still not at my goal unfortunately. It took me 66 attempts to get the Continuous Integration side of things setup as I wanted it. Now I’m onto the Continuous Deployment side of things. I’ve taken plenty of notes, and also hit on a whole range of issues I had no idea about to begin with.

      I definitely think it will be worth sharing, and I’m hoping others will find it useful too.

      1. Could you please add an output of latest comments in the sidebar?
        It’s impossible now to track new comments and answers in posts. Or it would be even better to install Disqus plugin.

        1. My sincere apologies on the delay in response to this. I can see a few now from mid-month that I have missed. I’m not sure why WordPress hasn’t flagged new comments from you – sorry about that.

          I have added in a “latest comments” widget to the sidebar now. I’d need to look into replacing comments with Disqus – it depends on whether it’s an “all-or-nothing” thing, as in, will I lose all my comment history. Like I say, further investigation required.

Leave a Reply

Your email address will not be published. Required fields are marked *