24 Commits

Author SHA1 Message Date
b3a8eb89ea fleshed out example files 2024-05-18 16:12:17 -04:00
cd4400ffba initial bind dns server containerfile, sample files 2024-05-18 16:07:55 -04:00
eaefe9d8c3 added fish to neovim image 2024-05-08 07:53:59 -04:00
61d966b65e removed whitespace 2024-05-05 20:33:30 -04:00
8e846870b4 changed build file to accept containerfiles 2024-05-05 20:32:40 -04:00
ccd0be99ba added whitespace 2024-05-05 20:29:50 -04:00
9e6bd0e298 changed input file 2024-05-05 20:12:22 -04:00
5ea3a90343 added action
added action so that when a containerfile is added/changed said containerfile will get built and pushed to scm
2024-05-05 19:58:20 -04:00
bcf02a056f updated base image 2024-05-05 19:56:15 -04:00
702d2b8890 added neovim image 2024-05-05 19:55:57 -04:00
44132ee907 base and kotlin container changes 2024-04-26 13:26:52 -04:00
2e11e2a2f0 modified readme 2024-04-08 12:52:14 -04:00
1287ed35c1 added powershell 2024-04-08 12:52:02 -04:00
1e5c7ccc5c fix node 18 containerfile, fix typos 2024-04-04 22:59:20 -04:00
e3d66b535e fix typo in java containerfiles 2024-04-04 22:56:55 -04:00
1f13ff3a05 add deno containerfile 2024-04-04 22:05:31 -04:00
6c57c07b4b updated readme 2024-03-22 12:57:55 -04:00
e808e19415 fixed typo in wine container v2 2024-03-22 12:57:37 -04:00
8352242242 fixed typo in wine container 2024-03-22 12:52:36 -04:00
0b293a678e added kotlin, wine container, modified java containers to include gradle build tool 2024-03-22 12:50:59 -04:00
e8b59e9c1c fixed escaped labels 2024-03-14 20:51:24 -04:00
a9392ea302 add java containerfiles, modified comments in dotnet container 2024-03-14 20:32:39 -04:00
0efa8bcce9 Merge pull request 'reorginization of files, updated language containers' (#2) from wm/base-container-updates into master
Reviewed-on: #2
2024-03-09 22:05:36 -06:00
36aea4fb0c Merge pull request 'Updated base container' (#1) from wm/base-container-updates into master
Reviewed-on: #1
2024-03-05 23:18:26 -06:00
19 changed files with 401 additions and 29 deletions

39
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,39 @@
name: Docker Build and Publish
on:
push:
paths:
- "**/Containerfile"
jobs:
build_and_publish:
name: Build and Publish Docker Image
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Get Dockerfile image name
id: get_image_name
run: |
IMAGE_NAME=$(grep -Po '(?<=name=")[^"]*' Containerfile)
echo "::set-output name=image_name::$IMAGE_NAME"
- name: Login to container registry
run: docker login -u ${{ secrets.REGISTRY_USERNAME }} -p ${{ secrets.REGISTRY_PASSWORD }} scm.wyattjmiller.com
- name: Check for Dockerfile changes
id: dockerfile_changed
run: |
if git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep '^Containerfile$'; then
echo "::set-output name=changed::true"
else
echo "::set-output name=changed::false"
fi
- name: Build and Publish Docker image
if: steps.dockerfile_changed.outputs.changed == 'true'
run: |
docker build -t scm.wyattjmiller.com/${{ steps.get_image_name.outputs.image_name }}:${{ github.sha }} .
docker push scm.wyattjmiller.com/${{ steps.get_image_name.outputs.image_name }}:${{ github.sha }}

View File

@ -14,30 +14,31 @@ This includes base language containers (with the base container mentioned above)
What's included:
- Node.js container
- Node 20 is available
- Node 18 is coming soon
- Golang container
- Rust container
- Node 20 and Node 18 are available
- Deno (latest) container
- Golang (latest) container
- Rust (latest) container
- .NET container
- .NET 7 and .NET 8 are included!
- .NET 7 and .NET 8 are available
- Powershell is included with the container
- Java container
- Java 11, 17, 21 are available
- Kotlin (latest) container
What's on the roadmap:
- Python container
- OpenJDK (Java/Kotlin/Scala) container
- Kotlin (native) container
- Python 3.12, 3.11, 3.10, and 3.9 will be included
- Julia container
- Lua container
- Only Lua 5.3 will be included
- Clojure container
- Zig container
- Nim container
- Deno container
- Bun container
## Specialty containers
Nothing is here yet but I'll likely create containers that could avoid the headache at some point.
What's on the roadmap:
What's included:
- Wine container
## Contribution

View File

@ -2,11 +2,11 @@
# Written by Wyatt J. Miller, 2023, 2024
# This image is opinionated, but you're welcome to customize as much as you like
# Start with the Fedora 39 image
FROM registry.fedoraproject.org/fedora-toolbox:39
# Start with the Fedora 40 image
FROM registry.fedoraproject.org/fedora-toolbox:40
# Label it right, ya know?
ENV NAME=custom_base_image VERSION=1.1
ENV NAME=base_container VERSION=1.3
LABEL com.github.containers.toolbox="true" \
com.redhat.component="$NAME" \
name="$NAME" \
@ -17,20 +17,25 @@ LABEL com.github.containers.toolbox="true" \
vendor="Miller Web Solutions"
# Install base development packages
RUN dnf install neovim tmux git fish zsh bat exa -y -q
RUN dnf copr enable atim/starship -y -q
RUN dnf copr enable varlad/zellij -y -q
RUN dnf install neovim tmux git fish zsh bat exa starship zellij wget unzip ansible htop iftop -y -q
RUN dnf groupinstall "C Development Tools and Libraries" -y -q
# Install starship prompt (to the moon!)
RUN curl -sS https://starship.rs/install.sh | sh -s -- -y
# Install atuin (magical shell history)
RUN curl -L https://github.com/atuinsh/atuin/releases/download/v18.0.2/atuin-v18.0.2-x86_64-unknown-linux-gnu.tar.gz --output atuin-v18.0.2-x86_64-unknown-linux-gnu.tar.gz
RUN tar xvzf atuin-v18.0.2-x86_64-unknown-linux-gnu.tar.gz
RUN cp ./atuin-v18.0.2-x86_64-unknown-linux-gnu/atuin /usr/local/bin/atuin
RUN rm -rf atuin-v18.0.2-x86_64-unknown-linux-gnu/
RUN curl -L https://github.com/atuinsh/atuin/releases/download/v18.2.0/atuin-v18.2.0-x86_64-unknown-linux-gnu.tar.gz --output atuin-v18.2.0-x86_64-unknown-linux-gnu.tar.gz
RUN tar xvzf atuin-v18.2.0-x86_64-unknown-linux-gnu.tar.gz
RUN cp ./atuin-v18.2.0-x86_64-unknown-linux-gnu/atuin /usr/local/bin/atuin
RUN rm -rf atuin-v18.2.0-x86_64-unknown-linux-gnu/
# Install lazygit (don't you know??)
RUN curl -L https://github.com/jesseduffield/lazygit/releases/download/v0.40.2/lazygit_0.40.2_Linux_x86_64.tar.gz --output lazygit_0.40.2_Linux_x86_64.tar.gz
RUN tar xvzf lazygit_0.40.2_Linux_x86_64.tar.gz
RUN curl -L https://github.com/jesseduffield/lazygit/releases/download/v0.41.0/lazygit_0.41.0_Linux_x86_64.tar.gz --output lazygit_0.41.0_Linux_x86_64.tar.gz
RUN tar xvzf lazygit_0.41.0_Linux_x86_64.tar.gz
RUN cp ./lazygit /usr/local/bin/lazygit
RUN rm LICENSE README.md lazygit
# Install smug (a tmux manager)
RUN curl -L https://github.com/ivaaaan/smug/releases/download/v0.3.3/smug_0.3.3_Linux_x86_64.tar.gz --output smug_0.3.3_Linux_x86_64.tar.gz
RUN tar xvzf smug_0.3.3_Linux_x86_64.tar.gz
RUN cp ./smug /usr/local/bin/smug
RUN rm LICENSE README.md smug

View File

@ -0,0 +1,21 @@
# Base Deno container image
# Written by Wyatt J. Miller, 2024
# This image is opinionated, but you're welcome to customize as much as you like
# Start with the Fedora 39 image
FROM scm.wyattjmiller.com/wymiller/base_container:latest
# Label it right, ya know?
ENV NAME=custom_base_deno_image VERSION=1.0
LABEL com.github.containers.toolbox="true" \
com.redhat.component="$NAME" \
name="$NAME" \
version="$VERSION" \
usage="Wyatt's base Deno image" \
summary="Wyatt's custom base Deno (latest) image" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Install deno
ENV DENO_INSTALL="/usr/local"
RUN curl -fsSL https://deno.land/install.sh | sh

View File

@ -3,7 +3,7 @@
# This image is opinionated, but you're welcome to customize as much as you like
# Start with the Fedora 38 image
FROM registry.fedoraproject.org/fedora-toolbox:38
FROM scm.wyattjmiller.com/wymiller/base_container:latest
# Label it right, ya know?
ENV NAME=custom_dotnet_base_image VERSION=1.0
@ -17,3 +17,4 @@ LABEL com.github.containers.toolbox="true" \
# Install .NET and related tools
RUN dnf install dotnet-sdk-7.0 dotnet-templates-7.0
RUN dotnet tool install --global PowerShell

View File

@ -17,4 +17,4 @@ LABEL com.github.containers.toolbox="true" \
# Install .NET and related tools
RUN dnf install dotnet-sdk-8.0 dotnet-templates-8.0
RUN fish -c "set -gx DOTNET_PATH $HOME/.dotnet/tools"
RUN dotnet tool install --global PowerShell

View File

@ -0,0 +1,31 @@
# Java 21 development container image
# Written by Wyatt J. Miller, 2023
# This image is opinionated, but you're welcome to customize as much as you like
# Start with the Fedora 39 custom image
FROM scm.wyattjmiller.com/wymiller/base_container:latest
# Label it right, ya know?
ENV NAME=custom_java_21_base_image VERSION=1.0
LABEL com.github.containers.toolbox="true" \
com.redhat.component="$NAME" \
name="$NAME" \
version="$VERSION" \
usage="Java currrent custom developer images" \
summary="Wyatt's custom Java 21 image" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Set environment variables
ENV GRADLE_VERSION=8.6
ENV GRADLE_HOME=/opt/gradle
ENV PATH="${PATH}:${GRADLE_HOME}/bin"
# Install the latest Java and the latest Java development files
RUN dnf install java-21-openjdk java-21-openjdk-devel -y -q && dnf clean all
# Download and install Gradle
RUN wget -q "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" -O gradle.zip && \
unzip -q gradle.zip -d /opt && \
mv "/opt/gradle-${GRADLE_VERSION}" "${GRADLE_HOME}" && \
rm gradle.zip

View File

@ -0,0 +1,31 @@
# Java 11 development container image
# Written by Wyatt J. Miller, 2024
# This image is opinionated, but you're welcome to customize as much as you like
# Start with the Fedora 39 custom image
FROM scm.wyattjmiller.com/wymiller/base_container:latest
# Label it right, ya know?
ENV NAME=custom_java_11_base_image VERSION=1.0
LABEL com.github.containers.toolbox="true" \
com.redhat.component="$NAME" \
name="$NAME" \
version="$VERSION" \
usage="Java currrent custom developer images" \
summary="Wyatt's custom Java 11 image" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Set environment variables
ENV GRADLE_VERSION=8.6
ENV GRADLE_HOME=/opt/gradle
ENV PATH="${PATH}:${GRADLE_HOME}/bin"
# Install Java 11 and Java 11 development files
RUN dnf install java-11-openjdk java-11-openjdk-devel -y -q && dnf clean all
# Download and install Gradle
RUN wget -q "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" -O gradle.zip && \
unzip -q gradle.zip -d /opt && \
mv "/opt/gradle-${GRADLE_VERSION}" "${GRADLE_HOME}" && \
rm gradle.zip

View File

@ -0,0 +1,31 @@
# Java 17 development container image
# Written by Wyatt J. Miller, 2024
# This image is opinionated, but you're welcome to customize as much as you like
# Start with the Fedora 39 custom image
FROM scm.wyattjmiller.com/wymiller/base_container:latest
# Label it right, ya know?
ENV NAME=custom_java_17_base_image VERSION=1.0
LABEL com.github.containers.toolbox="true" \
com.redhat.component="$NAME" \
name="$NAME" \
version="$VERSION" \
usage="Java currrent custom developer images" \
summary="Wyatt's custom Java 17 image" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Set environment variables
ENV GRADLE_VERSION=8.6
ENV GRADLE_HOME=/opt/gradle
ENV PATH="${PATH}:${GRADLE_HOME}/bin"
# Install Java 17 and Java 17 development files
RUN dnf install java-17-openjdk java-17-openjdk-devel -y -q && dnf clean all
# Download and install Gradle
RUN wget -q "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" -O gradle.zip && \
unzip -q gradle.zip -d /opt && \
mv "/opt/gradle-${GRADLE_VERSION}" "${GRADLE_HOME}" && \
rm gradle.zip

View File

@ -0,0 +1,39 @@
# Base Kotlin 1.9.2x image
# Written by Wyatt J. Miller, 2024
# This image is opinionated, but you're welcome to customize as much as you like
# Get my custom base image from scm
FROM scm.wyattjmiller.com/wymiller/base_container:latest
# Label it right, ya know?
ENV NAME=custom_base_kotlin_image VERSION=1.1
LABEL com.github.containers.toolbox="true" \
com.redhat.component="$NAME" \
name="$NAME" \
version="$VERSION" \
usage="Wyatt's base Kotlin image" \
summary="Wyatt's custom base Kotlin image" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Set environment variables
ENV KOTLIN_VERSION=1.9.23
ENV KOTLIN_HOME=/usr/local/kotlin
ENV GRADLE_VERSION=8.6
ENV GRADLE_HOME=/opt/gradle
# Install required packages
RUN dnf install -y -q wget unzip java-17-openjdk java-17-openjdk-devel && \
dnf clean all
# Download and install Kotlin
RUN wget -q "https://github.com/JetBrains/kotlin/releases/download/v${KOTLIN_VERSION}/kotlin-compiler-${KOTLIN_VERSION}.zip" -O kotlin.zip && \
unzip -q kotlin.zip -d /usr/local && \
mv /usr/local/kotlinc /usr/local/kotlin && \
rm kotlin.zip
# Download and install Gradle
RUN wget -q "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" -O gradle.zip && \
unzip -q gradle.zip -d /opt && \
mv "/opt/gradle-${GRADLE_VERSION}" "${GRADLE_HOME}" && \
rm gradle.zip

View File

@ -16,6 +16,6 @@ LABEL com.github.containers.toolbox="true" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Install base development packages
# Install node 20 and related npm
RUN dnf install nodejs npm -y -q
RUN npm install typescript -g

View File

@ -16,6 +16,8 @@ LABEL com.github.containers.toolbox="true" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Install base development packages
RUN dnf install nodejs18 npm -y -q
# Install node 18 and related npm
RUN dnf install nodejs18 nodejs18-npm -y -q
RUN ln -s /usr/bin/node-18 /usr/bin/node
RUN ln -s /usr/bin/npm-18 /usr/bin/npm
RUN npm install typescript -g

View File

@ -0,0 +1,38 @@
# Custom BIND DNS server image
# Written by Wyatt J. Miller, 2024
# This image is opinionated, but you're welcome to customize as much as you like
FROM internetsystemsconsortium/bind9:9.18
# Label it right, ya know?
ENV NAME=custom_bind_dns_server_image VERSION=1.0
LABEL com.github.containers.toolbox="true" \
com.redhat.component="$NAME" \
name="$NAME" \
version="$VERSION" \
usage="BIND DNS server image" \
summary="Wyatt's custom BIND DNS server image" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Install packages
RUN apt update \
&& apt install -y \
bind9-doc \
dnsutils \
geoip-bin \
mariadb-server \
net-tools
# Copy configuration files
# TODO: To the user: CHANGE THESE
COPY configuration/named.conf.options /etc/bind/
COPY configuration/named.conf.local /etc/bind/
COPY configuration/db.example.com /etc/bind/zones/
# Expose Ports
EXPOSE 53/tcp
EXPOSE 53/udp
EXPOSE 953/tcp
# Start the DNS service
CMD ["/usr/sbin/named", "-g", "-c", "/etc/bind/named.conf", "-u", "bind"]

View File

@ -0,0 +1,56 @@
# Custom BIND DNS server
TODO WORK IN PROGRESS
Written by Wyatt J. Miller, 2024
## Table of Contents
1. Prerequisites
2. Pulling
3. Installing
4. Running
## Prerequisites
- `systemd` (typically already installed)
- OCI container runtime
- Podman is preferred
- `podlet`
## Pulling
> [!NOTE]
> This container is to be run as a service and will be treated as such. This
> README will show you how to set this up as a service through `systemd` but
> other avenues are more than welcome
Pull this container from the command below:
```bash
podman pull scm.wyattjmiller.com/wymiller/bind-dns-server:latest
```
or you can build this Containerfile yourself!
```bash
git clone http://scm.wyattjmiller.com/wymiller/custom-containers.git
cd custom-containers/
podman build -t bind-dns-server -f specilaty-containers/bind/Containerfile
```
There are dedicated configuration files that are copied from the file system to
the container so it is recommended to build this container instead of pulling
it. Pulling the container only allows you to run only a sample DNS server.
> [!IMPORTANT]
> If you pull this image yourself and don't build the image from scratch, your
> image name will different! Remember this name in future steps.
Note to Wyatt: Pull your own DNS configuration from git
## Installing

View File

@ -0,0 +1,17 @@
; TODO: change this to your own soa, ns, a, aaaa, cname, etc. records
$TTL 1d ; default expiration time (in seconds) of all RRs without their own TTL value
@ IN SOA ns1.example.com. root.example.com. (
3 ; Serial
1d ; Refresh
1h ; Retry
1w ; Expire
1h ) ; Negative Cache TTL
; name servers - NS records
IN NS ns1.example.com.
; name servers - A records
ns1.example.com. IN A 172.24.0.2
service1.example.com. IN A 172.24.0.3
service2.example.com. IN A 172.24.0.4

View File

@ -0,0 +1,4 @@
zone "example.com" {
type master;
file "/etc/bind/zones/db.example.com";
};

View File

@ -0,0 +1,11 @@
options {
directory "/var/cache/bind";
recursion yes;
listen-on { any; };
forwarders {
8.8.8.8;
4.4.4.4;
};
};

View File

@ -0,0 +1,26 @@
# Custom Neovim image
# Written by Wyatt J. Miller, 2023, 2024
# This image is opinionated, but you're welcome to customize as much as you like
FROM registry.fedoraproject.org/fedora-toolbox:40
# Label it right, ya know?
ENV NAME=custom_neovim_image VERSION=1.0
LABEL com.github.containers.toolbox="true" \
com.redhat.component="$NAME" \
name="$NAME" \
version="$VERSION" \
usage="Neovim image, for solely Neovim and everything that makes it run" \
summary="Wyatt's custom Neovim image" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Install Neovim and what's needed for the AstroNVim distribution
RUN dnf copr enable atim/bottom -y
RUN dnf install neovim ripgrep cargo nodejs npm bottom python lua fish -y -q
RUN cargo install tree-sitter-cli
# Install lazygit (don't you know??)
RUN curl -L https://github.com/jesseduffield/lazygit/releases/download/v0.41.0/lazygit_0.41.0_Linux_x86_64.tar.gz --output lazygit_0.41.0_Linux_x86_64.tar.gz
RUN tar xvzf lazygit_0.41.0_Linux_x86_64.tar.gz
RUN cp ./lazygit /usr/local/bin/lazygit
RUN rm LICENSE README.md lazygit

View File

@ -0,0 +1,19 @@
# Wine container image
# Written by Wyatt J. Miller, 2024
# This image is opinionated, but you're welcome to customize as much as you like
# Start with the Fedora 39 image
FROM scm.wyattjmiller.com/wymiller/base_container:latest
# Label it right, ya know?
ENV NAME=custom_wine_image VERSION=1.1
LABEL com.github.containers.toolbox="true" \
com.redhat.component="$NAME" \
name="$NAME" \
version="$VERSION" \
usage="Wine image" \
summary="Wyatt's custom Wine image" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>"
# Install Wine
RUN dnf install wine -y