Compare commits

...

2 commits
v0.1.0 ... main

Author SHA1 Message Date
9dd9a8320a Update Readme.md
All checks were successful
Build Docker Image on Commit / build-and-publish (push) Successful in 9s
2025-06-05 17:20:26 +01:00
427726ea22 enable DHCP on gns3 use
All checks were successful
Build Docker Image on Commit / build-and-publish (push) Successful in 10s
Build and Publish Docker Image on Tag / build-and-publish (push) Successful in 13s
2025-06-05 05:46:45 +00:00
3 changed files with 50 additions and 26 deletions

View file

@ -2,8 +2,8 @@ FROM alpine:latest
# Install only essential packages
RUN apk add --no-cache \
xterm bash \
procps inetutils-telnet \
xterm bash procps \
iproute2 iputils \
fontconfig \
i3wm i3status

View file

@ -1,36 +1,47 @@
# README for Docker Image Build and Publish Workflows
# 🧱 i3 Base Image for GNS3 (VNC)
## Overview
> **Base for**: [vnc-template](https://git.merith.xyz/gns3/vnc-template)
Minimal Alpine-based Docker image with i3 window manager for GNS3 VNC appliances.
This repository contains two GitHub Actions workflows that automate the building and publishing of Docker images to an OCI registry.
---
### Workflows
## 🛠 Core Features
1. **On Commit to Main**
- **Trigger:** Activates on commits to the `main` branch (tags are excluded).
- **Purpose:** Builds and publishes a Docker image for each commit.
- **<50MB** Alpine base with i3 window manager
- Automatic DHCP configuration (`udhcpc`)
- Extensible design for lab environments
2. **On Tag Push**
- **Trigger:** Activates when a new tag is pushed.
- **Purpose:** Builds and publishes a Docker image for the tag and tags it as `latest`.
---
## Prerequisites
## 🏷️ Image Tags
- **Secrets Needed:**
- `OCI_TOKEN`: Your OCI registry token.
- `OCI_USER`: Your OCI registry username.
| Tag | Description |
|------------|-----------------------------------|
| `latest` | Stable release (`vX.X.X`) |
| `nightly` | Latest `main` branch commit |
| `<commit>` | Immutable build (e.g. `427726ea`) |
## How to Use
---
1. **Clone the Repository:** Get a local copy of this repository.
2. **Modify Dockerfile:** Update the `Dockerfile` for your application.
3. **Push Changes:** Push changes to the `main` branch or create a new tag.
4. **Check Workflow Status:** View the Actions tab in Forgjo to monitor workflow runs.
## ▶️ Usage with vnc-template
## Notes
1. Reference this image in your `Dockerfile`:
```Dockerfile
FROM git.merith.xyz/gns3/vnc-template
```
- Ensure your Docker environment is compatible with multi-platform builds if necessary.
2. Add custom tools and configs in [vnc-template](https://git.merith.xyz/gns3/vnc-template):
```Dockerfile
RUN apk add firefox wireshark
COPY my-configs /etc/
```
## License
3. Auto start programs by adding your own entrypoint
```Dockerfile
COPY custom-entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
```
> **⚠️ Do _not_ add an `ENTRYPOINT` line in your `Dockerfile`.**
> The base image already defines the required entrypoint for proper operation in GNS3.
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
See [vnc-template repository](https://git.merith.xyz/gns3/vnc-template) for full appliance creation guide.

15
vnc.sh
View file

@ -1,7 +1,20 @@
#!/bin/bash
# Bring up all interfaces and request DHCP, except loopback
if [ -d /gns3 ]; then
echo "Running in GNS3 environment, setting up interfaces for DHCP..."
for iface in $(ip -o link show | awk -F': ' '{print $2}' | grep -v '^lo$'); do
echo "Bringing up interface: $iface"
ip link set "$iface" up
udhcpc -i "$iface" &
done
fi
# Wait a moment for DHCP leases
sleep 2
# Launch i3 window manager
/usr/bin/i3
echo "i3 exited unexpectedly"
sleep infinity
sleep infinity