Docker Hugo
@ Theo | Friday, Aug 3, 2018 | 2 minutes read | Update at Friday, Aug 3, 2018

After restarting my blog, I wanted a way to automate my workflow. I currently work for AWS, and want to use the features of the cloud to manage and deploy my blog, but for as little cost as possible. The lowest cost for a static site like mine is Amazon S3, which offers to host the objects in the bucket as a static website.

This starts by adopting a solid framework for building static sites. After trying a few, I selected Hugo. I had been using mkdocs for training/tutorials but felt it lacked a good native layout engine and wasn’t a good fit for a blog.

I followed the installation instructions, but wanted something I could containerize (since it’s relevant to my current work). Thus, I created docker-hugo as a simple project to containerize hugo.

For now, this includes a README and a Dockerfile (copied as of August 3, 2018):

FROM centos:latest as builder

RUN yum -y update
RUN curl -sL -o hugo.tar.gz && tar zxf hugo.tar.gz hugo

FROM scratch

COPY --from=builder /hugo .

VOLUME /host

ENTRYPOINT ["/hugo"]

While a simple example, it does combine some newer Docker features. I used a multi-stage build to download the actual binary, then a scratch image for the actual deployment. The README highlights the syntax I use for the command, and an alias for being able to run hugo new posts/ with all of my environment variables already plugged in. This can also be adapted for a future CI/CD process.

About Me

Self-described technology enthusiast working with containers, DevOps, networking, load balancing, etc.


After college, I came back to the family business, this time to force-feed technology into the business instead of passing around a QuickBooks file and design templates on a Zip disk. This ended up as a good trade–I was able to both freely learn and implement new(er) technology and gain powerful business experience. I am fully capable of explaining any technical topic to a non-technical audience. I taught my mother about files/folders on a hard disk by showing her the files and folders in her file cabinets.

I spent a short time as a law firm doing more of the same, but wanted more. I joined a state-level government agency and began to specialize in networking. I quickly moved through the ranks moving from Junior to Senior status, and spent a few years as a Network Manager. I dove into “network service” technologies and tools like load balancing, name resolution, monitoring, logging, and analysis. My success there came from four principles:

  • Work with the customer–ensure your decisions are for their benefit.
  • The borders of your responsibility are soft–learn about how your department affects other departments. A little cross-team knowledge goes a long way.
  • Don’t waste time repeating processes–if you’ll repeat it, script it and let the system work for you.
  • Automate yourself out of a job–if you do, they’ll give you a better one.


I went to Florida Institute of Technology in Melbourne, FL, USA and received my Bachelor of Science in Computer Science. While the degree is a great résumé builder, the knowledge and experience gained were much more valuable.

We didn’t just focus on learning a programming language–we learned WHY a language was developed and what separates it from others. Concepts were more important, because that led to a language-independent programming skill. As a result, I can now write code in any language.

I also got a taste at other IT-related skills. The program provided enough electives for us to branch out and “test the waters” around different disciplines. As a result, I got a breadth of skills to help complement my degree: cryptography, computer vision, system administration, OS concepts, database design, etc.

My senior project was a collaboration between Aerospace, Mechanical, Computer, Electrical, and Software Engineers. We built a scale model of a V-22 “Osprey” with a design for mid-air transition while carrying heavy cargo. Since it was a scale model, we also used a wireless serial transmitter and ground interface to control the osprey using a Radio Controller hooked up to a computer screen. My job was the GUI/software for the Flight Control System and interface as well as the scripts to perform the advanced aeronautical calculations. It was a great team experience that further expanded my breath of skills and abilities.


My family and I wanted to move from Tallahassee, FL, USA, to Charlotte, NC, USA and we got the opportunity when I was offered a Network Engineer position with an insurance company that had a regional headquarters in Charlotte. I joined the Network Services team and found my passion for improving processes through orchestration/automation. I also got my first taste of cloud and cloud networking, which required a new education on cloud networking. For many years, I had watched other network professionals accelerate their knowledge and experience on networking to a point, then stick with that knowledge until otherwise forced to change. I realized that I’m not an “old school” networker, as I think being an expertise in networking doesn’t mean knowing every command in a CLI. Cloud networking is different, and requires a new way of architecting–traditional networking tools only work until the cloud border. Ultimately, I spent a short time at the insurance company because I was recruited by Amazon.

The Early Years

Ask my mother, and I was always going to work in technology. At age 5, I set the clock on the VCR and programmed it to record my shows.

My family owns a swimming pool contracting business in Tallahassee, FL, USA and I spent my childhood and teenage years learning how to run a business. Technology was a hobby, and I had fun exploring building my own gaming rig, writing plugins for software, and begrudgingly providing free technical support to friends and family.