1 Commits

Author SHA1 Message Date
615894ad18 fixed nodejs containers 2024-03-11 16:08:14 -04:00
19 changed files with 33 additions and 405 deletions

View File

@ -1,39 +0,0 @@
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,31 +14,30 @@ This includes base language containers (with the base container mentioned above)
What's included:
- Node.js container
- Node 20 and Node 18 are available
- Deno (latest) container
- Golang (latest) container
- Rust (latest) container
- Node 20 is available
- Node 18 is coming soon
- Golang container
- Rust container
- .NET container
- .NET 7 and .NET 8 are available
- Powershell is included with the container
- Java container
- Java 11, 17, 21 are available
- Kotlin (latest) container
- .NET 7 and .NET 8 are included!
What's on the roadmap:
- Python container
- Python 3.12, 3.11, 3.10, and 3.9 will be included
- OpenJDK (Java/Kotlin/Scala) container
- Kotlin (native) container
- Julia container
- Lua container
- Only Lua 5.3 will be included
- Clojure container
- Zig container
- Nim container
- Deno container
- Bun container
## Specialty containers
What's included:
Nothing is here yet but I'll likely create containers that could avoid the headache at some point.
What's on the roadmap:
- 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 40 image
FROM registry.fedoraproject.org/fedora-toolbox:40
# Start with the Fedora 39 image
FROM registry.fedoraproject.org/fedora-toolbox:39
# Label it right, ya know?
ENV NAME=base_container VERSION=1.3
ENV NAME=custom_base_image VERSION=1.1
LABEL com.github.containers.toolbox="true" \
com.redhat.component="$NAME" \
name="$NAME" \
@ -17,25 +17,20 @@ LABEL com.github.containers.toolbox="true" \
vendor="Miller Web Solutions"
# Install base development packages
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 install neovim tmux git fish zsh bat exa -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.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/
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/
# 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 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 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

@ -1,21 +0,0 @@
# 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 scm.wyattjmiller.com/wymiller/base_container:latest
FROM registry.fedoraproject.org/fedora-toolbox:38
# Label it right, ya know?
ENV NAME=custom_dotnet_base_image VERSION=1.0
@ -17,4 +17,3 @@ 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 dotnet tool install --global PowerShell
RUN fish -c "set -gx DOTNET_PATH $HOME/.dotnet/tools"

View File

@ -1,31 +0,0 @@
# 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

@ -1,31 +0,0 @@
# 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

@ -1,31 +0,0 @@
# 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

@ -1,39 +0,0 @@
# 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

@ -1,4 +1,4 @@
# Base Node.js container image
# Base Node.js 20 LTS container image
# Written by Wyatt J. Miller, 2023, 2024
# This image is opinionated, but you're welcome to customize as much as you like
@ -6,16 +6,16 @@
FROM scm.wyattjmiller.com/wymiller/base_container:latest
# Label it right, ya know?
ENV NAME=custom_base_node20_image VERSION=1.1
ENV NAME=custom_base_node_image VERSION=1.1
LABEL com.github.containers.toolbox="true" \
com.redhat.component="$NAME" \
name="$NAME" \
version="$VERSION" \
usage="Wyatt's base Node.js image" \
summary="Wyatt's custom base Node 20 image" \
summary="Wyatt's custom base Node image" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Install node 20 and related npm
# Install base development packages
RUN dnf install nodejs npm -y -q
RUN npm install typescript -g

View File

@ -1,4 +1,4 @@
# Base Node.js container image
# Base Node.js 18 container image
# Written by Wyatt J. Miller, 2023, 2024
# This image is opinionated, but you're welcome to customize as much as you like
@ -16,8 +16,6 @@ LABEL com.github.containers.toolbox="true" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Install node 18 and related npm
# Install base development packages
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
RUN npm-18 install typescript -g

View File

@ -1,38 +0,0 @@
# 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

@ -1,56 +0,0 @@
# 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

@ -1,17 +0,0 @@
; 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

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

View File

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

View File

@ -1,26 +0,0 @@
# 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

@ -1,19 +0,0 @@
# 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