--- title: "Podman and My Hugo Development Environment" date: 2024-08-16T12:01:31Z Description: "How I use Hugo with Podman." Tags: [Hugo, Podman] Categories: [tech] DisableComments: false --- I prefer to keep my main OS clean and uncluttered, avoiding installing too many programs that I don't use frequently. When I first learned about virtual machines (VMs) many years ago, I realized how useful they could be for experimenting without risking my main system. About 10 years ago, I discovered Docker containers. For me, containers became the ideal development environment. Unlike VMs, which take time to set up and install, containers allow you to have a fully functional environment ready in seconds. Since then, I've transitioned from Docker to Podman, though the commands remain largely the same. Hugo is a simple application to work with. Running hugo will convert your Markdown files into HTML and save them to the public directory. If you run hugo server, it starts a basic web server to test your site locally. While there are many options available for both of these commands, these are the two I use most often. But what if I don’t want to install the latest version of Hugo directly on my OS? I can run Hugo in a Podman container based on Ubuntu. Here’s how I set up the container for development: ```bash podman run -it \ -v ~/git/thewwwdotcom-blog/:/blog \ -p 1313:1313 \ ubuntu:latest \ bash ``` Let’s break down this command: * `podman run -it`: Starts a new container in interactive mode. * `-v ~/git/thewwwdotcom-blog/:/blog`: Mounts my local Hugo files from ~/git/thewwwdotcom-blog/ into the /blog directory inside the container. * `-p 1313:1313`: Maps port 1313 from the container to the host, allowing me to access the Hugo server in my browser. * `ubuntu:latest`: Specifies the latest Ubuntu LTS image for the container. * `bash`: Opens a BASH shell inside the container for further command-line interaction. Once inside the container, you’ll be in an Ubuntu terminal shell, regardless of the host OS. Now, let's install a text editor and Hugo. I prefer Micro for simple edits: ```bash apt update && apt install hugo micro ``` With everything installed, I can start the Hugo server: ```bash cd /blog hugo server \ --baseURL 127.0.0.1 \ --bind 127.0.0.1 ``` Setting the baseURL and bind options ensures that the test site runs locally as it would on the internet, but restricted to my machine. Finally, I can open http://127.0.0.1:1313 in my browser to view the temporary version of my website. ![Alt text]( /images/screenshot-blog-2024-08-16_14-30.png )