mirror of
https://git.theinfopunk.com/punk/thewwwdotcom-blog.git
synced 2025-07-26 02:04:25 -04:00
51 lines
2.5 KiB
Markdown
51 lines
2.5 KiB
Markdown
|
---
|
|||
|
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.
|
|||
|
|
|||
|

|