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 # Install only essential packages
RUN apk add --no-cache \ RUN apk add --no-cache \
xterm bash \ xterm bash procps \
procps inetutils-telnet \ iproute2 iputils \
fontconfig \ fontconfig \
i3wm i3status 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** - **<50MB** Alpine base with i3 window manager
- **Trigger:** Activates on commits to the `main` branch (tags are excluded). - Automatic DHCP configuration (`udhcpc`)
- **Purpose:** Builds and publishes a Docker image for each commit. - 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:** | Tag | Description |
- `OCI_TOKEN`: Your OCI registry token. |------------|-----------------------------------|
- `OCI_USER`: Your OCI registry username. | `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. ## ▶️ Usage with vnc-template
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.
## 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 #!/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 # Launch i3 window manager
/usr/bin/i3 /usr/bin/i3
echo "i3 exited unexpectedly" echo "i3 exited unexpectedly"
sleep infinity sleep infinity