Compare commits

..

24 Commits

Author SHA1 Message Date
ffa30ee109 add fzf to base container image
Some checks failed
Docker Build and Publish / Build and Publish Docker Image (push) Failing after 6m28s
2024-07-04 19:02:24 -04:00
371c91c45b added automatic install to dotnet images 2024-05-14 10:27:59 -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
14 changed files with 281 additions and 35 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 fzf -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
@ -16,4 +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-7.0 dotnet-templates-7.0
RUN dnf install dotnet-sdk-7.0 dotnet-templates-7.0 -y -q
RUN dotnet tool install --global PowerShell

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
RUN fish -c "set -gx DOTNET_PATH $HOME/.dotnet/tools"
RUN dnf install dotnet-sdk-8.0 dotnet-templates-8.0 -y -q
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

@ -1,4 +1,4 @@
# Base Node.js 20 LTS container image
# Base Node.js 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_node_image VERSION=1.1
ENV NAME=custom_base_node20_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 image" \
summary="Wyatt's custom base Node 20 image" \
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

@ -1,4 +1,4 @@
# Base Node.js 18 container image
# Base Node.js 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,6 +16,8 @@ LABEL com.github.containers.toolbox="true" \
maintainer="Wyatt J. Miller <wyatt@wyattjmiller.com>" \
vendor="Miller Web Solutions"
# Install base development packages
# Install node 18 and related npm
RUN dnf install nodejs18 nodejs18-npm -y -q
RUN npm-18 install typescript -g
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,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