Compare commits

..

1 Commits

Author SHA1 Message Date
615894ad18 fixed nodejs containers 2024-03-11 16:08:14 -04:00
14 changed files with 35 additions and 281 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 fzf -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
@ -16,5 +16,4 @@ LABEL com.github.containers.toolbox="true" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>"
# Install .NET and related tools
RUN dnf install dotnet-sdk-7.0 dotnet-templates-7.0 -y -q
RUN dotnet tool install --global PowerShell
RUN dnf install dotnet-sdk-7.0 dotnet-templates-7.0

View File

@ -16,5 +16,5 @@ LABEL com.github.containers.toolbox="true" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>"
# Install .NET and related tools
RUN dnf install dotnet-sdk-8.0 dotnet-templates-8.0 -y -q
RUN dotnet tool install --global PowerShell
RUN dnf install dotnet-sdk-8.0 dotnet-templates-8.0
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,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