Skip to content

Commit

Permalink
chore: initial commit
Browse files Browse the repository at this point in the history
Released under the Apache License Version 2.0, January 2004.

  http://www.apache.org/licenses/

Based on the Ubuntu official Docker image from https://hub.docker.com/_/ubuntu

  - Ubuntu 24.04.1 LTS: ubuntu:noble-20240904.1
    - Intel/AMD x86 64-bit (linux/amd64): https://hub.docker.com/r/amd64/ubuntu
    - ARMv7 32-bit (linux/arm/v7): https://hub.docker.com/r/arm32v7/ubuntu
    - ARMv8 64-bit (linux/arm64/v8): https://hub.docker.com/r/arm64v8/ubuntu
    - RISC-V 64-bit (linux/riscv64): https://hub.docker.com/r/riscv64/ubuntu
    - IBM POWER8 (linux/ppc64le): https://hub.docker.com/r/ppc64le/ubuntu
    - IBM z-Systems (linux/s390x): https://hub.docker.com/r/s390x/ubuntu
  - ASDF v0.14.1
  - ASDF Plugin Manager v1.4.0

Signed-off-by: Stephan Linz <[email protected]>
  • Loading branch information
rexut committed Oct 10, 2024
0 parents commit 930adb4
Show file tree
Hide file tree
Showing 4 changed files with 636 additions and 0 deletions.
117 changes: 117 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Created by https://www.toptal.com/developers/gitignore/api/git,vim,emacs,joe,visualstudiocode,codeio
# Edit at https://www.toptal.com/developers/gitignore?templates=git,vim,emacs,joe,visualstudiocode,codeio

### Codeio ###
.codio

### Emacs ###
# -*- mode: gitignore; -*-
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*

# Org-mode
.org-id-locations
*_archive

# flymake-mode
*_flymake.*

# eshell files
/eshell/history
/eshell/lastdir

# elpa packages
/elpa/

# reftex files
*.rel

# AUCTeX auto folder
/auto/

# cask packages
.cask/
dist/

# Flycheck
flycheck_*.el

# server auth directory
/server/

# projectiles files
.projectile

# directory configuration
.dir-locals.el

# network security
/network-security.data


### Git ###
# Created by git for backups. To disable backups in Git:
# $ git config --global mergetool.keepBackup false
*.orig

# Created by git when using merge tools for conflicts
*.BACKUP.*
*.BASE.*
*.LOCAL.*
*.REMOTE.*
*_BACKUP_*.txt
*_BASE_*.txt
*_LOCAL_*.txt
*_REMOTE_*.txt

### Joe ###
# File backups
# Gets created when joe crashes
DEADJOE

### Vim ###
# Swap
[._]*.s[a-v][a-z]
!*.svg # comment out if you don't need vector files
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]

# Session
Session.vim
Sessionx.vim

# Temporary
.netrwhist
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~

### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets

# Local History for Visual Studio Code
.history/

# Built Visual Studio Code Extensions
*.vsix

### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide

# End of https://www.toptal.com/developers/gitignore/api/git,vim,emacs,joe,visualstudiocode,codeio
246 changes: 246 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
# TiaC Systems Network - ASDF Workspace
#
# -- derived from official Ubuntu Docker image
# -- see: https://hub.docker.com/_/ubuntu/tags
# -- see: https://github.com/docker-library/official-images
#
# -- support Docker multi-platform image build
# -- see: https://docs.docker.com/build/building/multi-platform
# -- see: https://docs.docker.com/build/building/variables/#multi-platform-build-arguments
#
# -- TARGETPLATFORM=linux/amd64: TARGETOS=linux, TARGETARCH=amd64, TARGETVARIANT=
# -- TARGETPLATFORM=linux/arm/v7: TARGETOS=linux, TARGETARCH=arm, TARGETVARIANT=v7
# -- TARGETPLATFORM=linux/arm64/v8: TARGETOS=linux, TARGETARCH=arm64, TARGETVARIANT=v8
# -- TARGETPLATFORM=linux/riscv64: TARGETOS=linux, TARGETARCH=riscv64, TARGETVARIANT=
# -- TARGETPLATFORM=linux/ppc64le: TARGETOS=linux, TARGETARCH=ppc64le, TARGETVARIANT=
# -- TARGETPLATFORM=linux/s390x: TARGETOS=linux, TARGETARCH=s390x, TARGETVARIANT=
#

# ############################################################################
#
# Base system maintenance with official Ubuntu Docker image
#
# ############################################################################

FROM ubuntu:noble-20240904.1 AS base

# overwrite Ubuntu default metadata
LABEL mantainer="Stephan Linz <[email protected]>"
LABEL version="unstable"

# ############################################################################

# workspace user definitions (derived from readthedocs/user to be compatible)
ARG WSUSER_HOME=/home/tsn
ARG WSUSER_NAME=tsn
ARG WSUSER_UID=1005
ARG WSUSER_GID=205

# ############################################################################

SHELL ["/bin/sh", "-ex", "-c"]

# ############################################################################

#
# ASDF runtime version
# https://asdf-vm.com/
# https://github.com/asdf-vm/asdf/blob/master/CHANGELOG.md
#

# Define ASDF branch to be installed via git-clone
ENV TSN_ASDF_BRANCH=v0.14.1

#
# ASDF Plugin Manager runtime version
# https://github.com/asdf-community/asdf-plugin-manager
# https://github.com/asdf-community/asdf-plugin-manager/blob/main/CHANGELOG.md
#

# Define ASDF Plugin Manager version to be installed via ASDF
ENV TSN_ASDF_PM_VERSION=1.4.0

# ############################################################################

ENV DEBIAN_FRONTEND=noninteractive
ENV DEBCONF_NONINTERACTIVE_SEEN=true
ENV LANG=C.UTF-8

USER root
WORKDIR /

# ############################################################################

# create workspace user with their UID and GID
RUN groupadd --gid $WSUSER_GID $WSUSER_NAME
RUN useradd -m --uid $WSUSER_UID --gid $WSUSER_GID $WSUSER_NAME

# ############################################################################

# System dependencies
RUN apt-get --assume-yes update
RUN apt-get --assume-yes dist-upgrade
RUN apt-get --assume-yes install --no-install-recommends \
apt-utils \
software-properties-common \
vim
RUN apt-get --assume-yes autoremove --purge
RUN apt-get clean

# Install requirements
RUN apt-get --assume-yes install --no-install-recommends \
bash \
bash-completion \
bsdmainutils \
coreutils \
curl \
git-core \
grep \
sed
RUN apt-get --assume-yes autoremove --purge
RUN apt-get clean

# ############################################################################

# Localization dependencies
RUN apt-get --assume-yes install --no-install-recommends \
locales

# Setup locales for German
RUN locale-gen de_DE.UTF-8
RUN update-locale LANG=de_DE.UTF-8
ENV LANG=de_DE.UTF-8
RUN locale -a

# Setup locales for English
RUN locale-gen en_US.UTF-8
RUN update-locale LANG=en_US.UTF-8
ENV LANG=en_US.UTF-8
RUN locale -a

# ############################################################################

# make /bin/sh symlink to bash instead of dash:
RUN echo "dash dash/sh boolean false" | debconf-set-selections
RUN dpkg-reconfigure --frontend=readline --priority=critical dash

# HOTFIX: The construct above has no effect, do it manually!
RUN ln -sf bash /bin/sh

SHELL ["/bin/sh", "-exo", "pipefail", "-c"]

# ############################################################################

#
# Manage multiple runtime versions with the
# ASDF version manager in workspace user space.
#

USER $WSUSER_NAME
WORKDIR $WSUSER_HOME

# Install ASDF
RUN git clone https://github.com/asdf-vm/asdf.git ~/.asdf --depth 1 --branch $TSN_ASDF_BRANCH
RUN echo ". ~/.asdf/asdf.sh" >> $WSUSER_HOME/.bashrc
RUN echo ". ~/.asdf/completions/asdf.bash" >> $WSUSER_HOME/.bashrc

# Activate ASDF in current session
ENV PATH=$WSUSER_HOME/.asdf/shims:$WSUSER_HOME/.asdf/bin:$PATH

# Install ASDF plugins
RUN asdf plugin add asdf-plugin-manager https://github.com/asdf-community/asdf-plugin-manager.git

# Adding labels for external usage
LABEL asdf.branch=$TSN_ASDF_BRANCH

# Upgrade ASDF version manager
# https://github.com/asdf-vm/asdf
RUN asdf update
RUN asdf plugin update --all

# ############################################################################

#
# ASDF Plugin Manager runtime version
#

# Install ASDF Plugin Manager
RUN asdf install asdf-plugin-manager $TSN_ASDF_PM_VERSION && \
asdf global asdf-plugin-manager $TSN_ASDF_PM_VERSION && \
asdf reshim asdf-plugin-manager

# Adding labels for external usage
LABEL asdf-plugin-manager.version=$TSN_ASDF_PM_VERSION

# Set default ASDF Plugin Manager version
RUN asdf local asdf-plugin-manager $TSN_ASDF_PM_VERSION
RUN asdf list asdf-plugin-manager

# Export initial list of ASDF plugins
RUN touch $WSUSER_HOME/.plugin-versions
RUN asdf-plugin-manager export > $WSUSER_HOME/.plugin-versions

# ############################################################################
#
# AMD/x86 64-bit architecture maintenance
#
# ############################################################################

FROM base AS build-amd64

# ############################################################################
#
# ARMv7 32-bit architecture maintenance
#
# ############################################################################

FROM base AS build-arm

# ############################################################################
#
# ARMv8 64-bit architecture maintenance
#
# ############################################################################

FROM base AS build-arm64

# ############################################################################
#
# RISC-V 64-bit architecture maintenance
#
# ############################################################################

FROM base AS build-riscv64

# ############################################################################
#
# IBM POWER8 architecture maintenance
#
# ############################################################################

FROM base AS build-ppc64le

# ############################################################################
#
# IBM z-Systems architecture maintenance
#
# ############################################################################

FROM base AS build-s390x

# ############################################################################
#
# All architectures maintenance
#
# ############################################################################

FROM build-${TARGETARCH} AS build

RUN asdf version
RUN asdf list

RUN asdf-plugin-manager version
RUN asdf-plugin-manager list

# Set executable for main entry point
CMD ["/bin/bash"]
Loading

0 comments on commit 930adb4

Please sign in to comment.