Files
thewwwdotcom-blog/content/english/post/hugo-dev.md
Jason Evans db67aec7bb first
2024-09-21 16:32:21 +02:00

51 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 dont want to install the latest version of Hugo directly on my OS? I can run Hugo in a Podman container based on Ubuntu. Heres how I set up the container for development:
```bash
podman run -it \
-v ~/git/thewwwdotcom-blog/:/blog \
-p 1313:1313 \
ubuntu:latest \
bash
```
Lets 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, youll 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 )