mirror of
https://github.com/casjaysdevdocker/lenpaste
synced 2025-11-10 14:38:14 -05:00
This commit is contained in:
69
.claude/settings.local.json
Normal file
69
.claude/settings.local.json
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"model": "sonnet[1m]",
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Read(**)",
|
||||
"Write(**)",
|
||||
"WebSearch",
|
||||
"WebFetch(domain:github.com)",
|
||||
"Bash(mkdir:*)",
|
||||
"Bash(tree:*)",
|
||||
"Bash(go:*)",
|
||||
"Bash(curl:*)",
|
||||
"Bash(wget:*)",
|
||||
"Bash(echo:*)",
|
||||
"Bash(make:*)",
|
||||
"Bash(find:*)",
|
||||
"Bash(grep:*)",
|
||||
"Bash(awk:*)",
|
||||
"Bash(sed:*)",
|
||||
"Bash(cat:*)",
|
||||
"Bash(chmod:*)",
|
||||
"Bash(chown:*)",
|
||||
"Bash(docker:*)",
|
||||
"Bash(docker-compose:*)",
|
||||
"Bash(incus:*)",
|
||||
"Bash(git:*)",
|
||||
"Bash(pkill:*)",
|
||||
"Bash(rm:*)",
|
||||
"Bash(mv:*)",
|
||||
"Bash(cp:*)",
|
||||
"Bash(ls:*)",
|
||||
"Bash(pwd:*)",
|
||||
"Bash(cd:*)",
|
||||
"Bash(head:*)",
|
||||
"Bash(timeout:*)",
|
||||
"Bash(do:*)",
|
||||
"Bash(ln:*)",
|
||||
"Bash(test:*)",
|
||||
"Bash(do)",
|
||||
"Bash(sort:*)",
|
||||
"Bash(paste:*)",
|
||||
"Bash(*:*)"
|
||||
],
|
||||
"deny": [
|
||||
"Bash(git commit:*)"
|
||||
],
|
||||
"ask": []
|
||||
},
|
||||
"preferences": {
|
||||
"auto_commit": false
|
||||
},
|
||||
"hooks": {
|
||||
"PreToolUse": [
|
||||
{
|
||||
"matcher": "Write(**)",
|
||||
"hooks": [
|
||||
{
|
||||
"type": "command",
|
||||
"command": "if grep -qi 'anthropic\\|claude' \"$file\" 2>/dev/null; then echo 'Error: File contains vendor names (Anthropic/Claude)' >&2; exit 1; fi"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"env": {
|
||||
"MAX_THINKING_TOKENS": "1000"
|
||||
}
|
||||
}
|
||||
|
||||
17
.dockerignore
Normal file
17
.dockerignore
Normal file
@@ -0,0 +1,17 @@
|
||||
# Files to ignore
|
||||
# Tell docker to ignore .gitkeep
|
||||
.gitkeep
|
||||
# Tell docker to ignore .gitignore
|
||||
.gitignore
|
||||
# Tell docker to ignore node_modules/**
|
||||
node_modules/**
|
||||
# Tell docker to ignore .node_modules/**
|
||||
.node_modules/**
|
||||
# Tell docker to ignore **/.gitkeep
|
||||
**/.gitkeep
|
||||
# Tell docker to ignore **/.gitignore
|
||||
**/.gitignore
|
||||
# Tell docker to ignore **/node_modules/**
|
||||
**/node_modules/**
|
||||
# Tell docker to ignore **/.node_modules/**
|
||||
**/.node_modules/**
|
||||
60
.env.scripts
Normal file
60
.env.scripts
Normal file
@@ -0,0 +1,60 @@
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
##@Version : 202509161148-git
|
||||
# @@Author : CasjaysDev
|
||||
# @@Contact : CasjaysDev <docker-admin@casjaysdev.pro>
|
||||
# @@License : MIT
|
||||
# @@Copyright : Copyright 2025 CasjaysDev
|
||||
# @@Created : Tue Sep 16 11:48:17 AM EDT 2025
|
||||
# @@File : .env.scripts
|
||||
# @@Description : Variables for gen-dockerfile and buildx scripts
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# entrypoint Settings
|
||||
DOCKER_ENTYPOINT_PORTS_WEB="${DOCKER_ENTYPOINT_PORTS_WEB}"
|
||||
DOCKER_ENTYPOINT_PORTS_SRV="${DOCKER_ENTYPOINT_PORTS_SRV}"
|
||||
DOCKER_ENTYPOINT_HEALTH_APPS="$DOCKER_ENTYPOINT_HEALTH_APPS"
|
||||
DOCKER_ENTYPOINT_HEALTH_ENDPOINTS="$DOCKER_ENTYPOINT_HEALTH_ENDPOINTS"
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Dockerfile info
|
||||
ENV_DOCKERFILE="Dockerfile"
|
||||
ENV_IMAGE_NAME="lenpaste"
|
||||
ENV_USE_TEMPLATE="debian"
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Maintainer info
|
||||
ENV_ORG_NAME="casjaysdevdocker"
|
||||
ENV_VENDOR="CasjaysDev"
|
||||
ENV_AUTHOR="CasjaysDev"
|
||||
ENV_MAINTAINER="CasjaysDev <docker-admin@casjaysdev.pro>"
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# REPO info
|
||||
ENV_GIT_REPO_URL="https://github.com/casjaysdevdocker/lenpaste"
|
||||
ENV_REGISTRY_URL="docker.io"
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Push image info
|
||||
ENV_IMAGE_PUSH="casjaysdevdocker/lenpaste"
|
||||
ENV_IMAGE_TAG="latest"
|
||||
ENV_ADD_TAGS=""
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
ENV_ADD_IMAGE_PUSH=""
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Pull image info
|
||||
ENV_PULL_URL="casjaysdev/debian"
|
||||
ENV_DISTRO_TAG="${IMAGE_VERSION}"
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Env
|
||||
SERVICE_PORT="80"
|
||||
EXPOSE_PORTS=""
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Versions
|
||||
PHP_VERSION="system"
|
||||
NODE_VERSION="system"
|
||||
NODE_MANAGER="system"
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
# Default directories
|
||||
WWW_ROOT_DIR="/usr/local/share/httpd/default"
|
||||
DEFAULT_FILE_DIR="/usr/local/share/template-files"
|
||||
DEFAULT_DATA_DIR="/usr/local/share/template-files/data"
|
||||
DEFAULT_CONF_DIR="/usr/local/share/template-files/config"
|
||||
DEFAULT_TEMPLATE_DIR="/usr/local/share/template-files/defaults"
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
ENV_PACKAGES=""
|
||||
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
86
.gitattributes
vendored
Normal file
86
.gitattributes
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
# Template generated on Thu Sep 4 10:41:50 PM EDT 2025 from https://github.com/alexkaratarakis/gitattributes"
|
||||
# Common settings that generally should always be used with your language specific settings
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
# The above will handle all files NOT found below
|
||||
# Documents
|
||||
*.bibtex text diff=bibtex
|
||||
*.doc diff=astextplain
|
||||
*.DOC diff=astextplain
|
||||
*.docx diff=astextplain
|
||||
*.DOCX diff=astextplain
|
||||
*.dot diff=astextplain
|
||||
*.DOT diff=astextplain
|
||||
*.pdf diff=astextplain
|
||||
*.PDF diff=astextplain
|
||||
*.rtf diff=astextplain
|
||||
*.RTF diff=astextplain
|
||||
*.md text diff=markdown
|
||||
*.mdx text diff=markdown
|
||||
*.tex text diff=tex
|
||||
*.adoc text
|
||||
*.textile text
|
||||
*.mustache text
|
||||
*.csv text eol=crlf
|
||||
*.tab text
|
||||
*.tsv text
|
||||
*.txt text
|
||||
*.sql text
|
||||
*.epub diff=astextplain
|
||||
# Graphics
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.jpeg binary
|
||||
*.gif binary
|
||||
*.tif binary
|
||||
*.tiff binary
|
||||
*.ico binary
|
||||
# SVG treated as text by default.
|
||||
*.svg text
|
||||
# If you want to treat it as binary,
|
||||
# use the following line instead.
|
||||
# *.svg binary
|
||||
*.eps binary
|
||||
# Scripts
|
||||
*.bash text eol=lf
|
||||
*.fish text eol=lf
|
||||
*.ksh text eol=lf
|
||||
*.sh text eol=lf
|
||||
*.zsh text eol=lf
|
||||
# These are explicitly windows files and should use crlf
|
||||
*.bat text eol=crlf
|
||||
*.cmd text eol=crlf
|
||||
*.ps1 text eol=crlf
|
||||
# Serialisation
|
||||
*.json text
|
||||
*.toml text
|
||||
*.xml text
|
||||
*.yaml text
|
||||
*.yml text
|
||||
# Archives
|
||||
*.7z binary
|
||||
*.bz binary
|
||||
*.bz2 binary
|
||||
*.bzip2 binary
|
||||
*.gz binary
|
||||
*.lz binary
|
||||
*.lzma binary
|
||||
*.rar binary
|
||||
*.tar binary
|
||||
*.taz binary
|
||||
*.tbz binary
|
||||
*.tbz2 binary
|
||||
*.tgz binary
|
||||
*.tlz binary
|
||||
*.txz binary
|
||||
*.xz binary
|
||||
*.Z binary
|
||||
*.zip binary
|
||||
*.zst binary
|
||||
# Text files where line endings should be preserved
|
||||
*.patch -text
|
||||
# Exclude files from exporting
|
||||
.gitattributes export-ignore
|
||||
.gitignore export-ignore
|
||||
.gitkeep export-ignore
|
||||
|
||||
52
.gitea/workflows/docker.yaml
Normal file
52
.gitea/workflows/docker.yaml
Normal file
@@ -0,0 +1,52 @@
|
||||
name: release-tag
|
||||
|
||||
on: push
|
||||
|
||||
jobs:
|
||||
release-image:
|
||||
runs-on: act_runner
|
||||
container:
|
||||
image: catthehacker/ubuntu:act-latest
|
||||
env:
|
||||
RUNNER_TOOL_CACHE: /toolcache
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v2
|
||||
|
||||
- name: Get Meta
|
||||
id: meta
|
||||
run: |
|
||||
echo DATE_TAG=$(date +'%y%m') >> $GITHUB_OUTPUT
|
||||
echo REPO_VERSION=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT
|
||||
echo DOCKER_ORG=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $1}') >> $GITHUB_OUTPUT
|
||||
echo DOCKER_TAG=$([ -n "$DOCKER_TAG" ] && echo ${DOCKER_TAG} || echo "latest") >> $GITHUB_OUTPUT
|
||||
echo DOCKER_HUB=$([ -n "$DOCKER_HUB" ] && echo ${DOCKER_HUB} || echo "docker.io") >> $GITHUB_OUTPUT
|
||||
echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}' | sed 's|^docker-||g') >> $GITHUB_OUTPUT
|
||||
echo "$DOCKER_HUB/$DOCKER_ORG/$REPO_NAME:$DOCKER_TAG"
|
||||
|
||||
- name: Set up Docker BuildX
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
password: ${{ secrets.DOCKER_TOKEN }}
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
registry: ${{ steps.meta.outputs.DOCKER_HUB }}
|
||||
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
platforms: |
|
||||
linux/amd64
|
||||
linux/arm64
|
||||
push: true
|
||||
tags: | # replace it with your local IP and tags
|
||||
${{ steps.meta.outputs.DOCKER_HUB }}/${{ steps.meta.outputs.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.DATE_TAG }}
|
||||
${{ steps.meta.outputs.DOCKER_HUB }}/${{ steps.meta.outputs.DOCKER_ORG }}/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.DOCKER_TAG }}
|
||||
|
||||
117
.gitignore
vendored
Normal file
117
.gitignore
vendored
Normal file
@@ -0,0 +1,117 @@
|
||||
# gitignore created on 05/22/25 at 21:00
|
||||
# Disable reminder in prompt
|
||||
ignoredirmessage
|
||||
|
||||
# OS generated files
|
||||
### Linux ###
|
||||
*~
|
||||
|
||||
# temporary files which can be created if a process still has a handle open of a deleted file
|
||||
.fuse_hidden*
|
||||
|
||||
# KDE directory preferences
|
||||
.directory
|
||||
|
||||
# Linux trash folder which might appear on any partition or disk
|
||||
.Trash-*
|
||||
|
||||
# .nfs files are created when an open file is removed but is still being accessed
|
||||
.nfs*
|
||||
|
||||
### macOS ###
|
||||
# General
|
||||
.DS_Store?
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
### macOS Patch ###
|
||||
# iCloud generated files
|
||||
*.icloud
|
||||
|
||||
### Windows ###
|
||||
# Windows thumbnail cache files
|
||||
Thumbs.db
|
||||
Thumbs.db:encryptable
|
||||
ehthumbs.db
|
||||
ehthumbs_vista.db
|
||||
|
||||
# Dump file
|
||||
*.stackdump
|
||||
|
||||
# Folder config file
|
||||
[Dd]esktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Windows Installer files
|
||||
*.cab
|
||||
*.msi
|
||||
*.msix
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# misc
|
||||
!*/README*
|
||||
!inc/main.bash
|
||||
|
||||
# Windows shortcuts
|
||||
*.lnk
|
||||
|
||||
# ignore commit message
|
||||
**/.gitcommit
|
||||
|
||||
# ignore .build_failed files
|
||||
**/.build_failed*
|
||||
|
||||
# ignore .bak files
|
||||
**/*.bak
|
||||
|
||||
# ignore .no_push files
|
||||
**/.no_push
|
||||
|
||||
# ignore .no_git files
|
||||
**/.no_git
|
||||
|
||||
# ignore .installed files
|
||||
**/.installed
|
||||
|
||||
# ignore work in progress files
|
||||
**/*.rewrite.sh
|
||||
**/*.refactor.sh
|
||||
|
||||
# ignore dotenv files
|
||||
.env
|
||||
|
||||
# Ignore the file: app.env
|
||||
app.env
|
||||
|
||||
# Ignore the file: compose.default.yaml
|
||||
compose.default.yaml
|
||||
# ignore the default dotenv file
|
||||
default.env
|
||||
# Exclude the rootfs dir
|
||||
rootfs
|
||||
|
||||
# Exclude compose.yaml just in case it has sensitive data
|
||||
compose.yaml
|
||||
|
||||
258
Dockerfile
Normal file
258
Dockerfile
Normal file
@@ -0,0 +1,258 @@
|
||||
# Docker image for lenpaste using the alpine template
|
||||
ARG IMAGE_NAME="lenpaste"
|
||||
ARG PHP_SERVER="lenpaste"
|
||||
ARG BUILD_DATE="202509161148"
|
||||
ARG LANGUAGE="en_US.UTF-8"
|
||||
ARG TIMEZONE="America/New_York"
|
||||
ARG WWW_ROOT_DIR="/usr/local/share/httpd/default"
|
||||
ARG DEFAULT_FILE_DIR="/usr/local/share/template-files"
|
||||
ARG DEFAULT_DATA_DIR="/usr/local/share/template-files/data"
|
||||
ARG DEFAULT_CONF_DIR="/usr/local/share/template-files/config"
|
||||
ARG DEFAULT_TEMPLATE_DIR="/usr/local/share/template-files/defaults"
|
||||
ARG PATH="/usr/local/etc/docker/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
|
||||
ARG USER="root"
|
||||
ARG SHELL_OPTS="set -e -o pipefail"
|
||||
|
||||
ARG SERVICE_PORT="80"
|
||||
ARG EXPOSE_PORTS=""
|
||||
ARG PHP_VERSION="system"
|
||||
ARG NODE_VERSION="system"
|
||||
ARG NODE_MANAGER="system"
|
||||
|
||||
ARG IMAGE_REPO="casjaysdevdocker/lenpaste"
|
||||
ARG IMAGE_VERSION="latest"
|
||||
ARG CONTAINER_VERSION=""
|
||||
|
||||
ARG PULL_URL="casjaysdev/debian"
|
||||
ARG DISTRO_VERSION="${IMAGE_VERSION}"
|
||||
ARG BUILD_VERSION="${BUILD_DATE}"
|
||||
|
||||
FROM tianon/gosu:latest AS gosu
|
||||
FROM ghcr.io/casjay-forks/lenpaste:latest AS lenpaste
|
||||
FROM ${PULL_URL}:${DISTRO_VERSION} AS build
|
||||
ARG TZ
|
||||
ARG USER
|
||||
ARG LICENSE
|
||||
ARG TIMEZONE
|
||||
ARG LANGUAGE
|
||||
ARG IMAGE_NAME
|
||||
ARG BUILD_DATE
|
||||
ARG SERVICE_PORT
|
||||
ARG EXPOSE_PORTS
|
||||
ARG BUILD_VERSION
|
||||
ARG IMAGE_VERSION
|
||||
ARG WWW_ROOT_DIR
|
||||
ARG DEFAULT_FILE_DIR
|
||||
ARG DEFAULT_DATA_DIR
|
||||
ARG DEFAULT_CONF_DIR
|
||||
ARG DEFAULT_TEMPLATE_DIR
|
||||
ARG DISTRO_VERSION
|
||||
ARG NODE_VERSION
|
||||
ARG NODE_MANAGER
|
||||
ARG PHP_VERSION
|
||||
ARG PHP_SERVER
|
||||
ARG SHELL_OPTS
|
||||
ARG PATH
|
||||
|
||||
ARG PACK_LIST=""
|
||||
|
||||
ENV ENV=~/.profile
|
||||
ENV SHELL="/bin/sh"
|
||||
ENV PATH="${PATH}"
|
||||
ENV TZ="${TIMEZONE}"
|
||||
ENV TIMEZONE="${TZ}"
|
||||
ENV LANG="${LANGUAGE}"
|
||||
ENV TERM="xterm-256color"
|
||||
ENV HOSTNAME="casjaysdevdocker-lenpaste"
|
||||
|
||||
USER ${USER}
|
||||
WORKDIR /root
|
||||
|
||||
COPY ./rootfs/usr/local/bin/. /usr/local/bin/
|
||||
|
||||
RUN set -e; \
|
||||
echo "Updating the system and ensuring bash is installed"; \
|
||||
pkmgr update;pkmgr install bash
|
||||
|
||||
RUN set -e; \
|
||||
echo "Setting up prerequisites"; \
|
||||
true
|
||||
|
||||
ENV SHELL="/bin/bash"
|
||||
SHELL [ "/bin/bash", "-c" ]
|
||||
|
||||
COPY --from=gosu /usr/local/bin/gosu /usr/local/bin/gosu
|
||||
COPY --from=lenpaste /usr/local/bin/lenpaste /usr/local/bin/lenpaste
|
||||
|
||||
RUN echo "Initializing the system"; \
|
||||
$SHELL_OPTS; \
|
||||
mkdir -p "${DEFAULT_DATA_DIR}" "${DEFAULT_CONF_DIR}" "${DEFAULT_TEMPLATE_DIR}" "/root/docker/setup" "/etc/profile.d"; \
|
||||
if [ -f "/root/docker/setup/00-init.sh" ];then echo "Running the init script";/root/docker/setup/00-init.sh||{ echo "Failed to execute /root/docker/setup/00-init.sh" >&2 && exit 10; };echo "Done running the init script";fi; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Creating and editing system files "; \
|
||||
$SHELL_OPTS; \
|
||||
[ -f "/root/.profile" ] || touch "/root/.profile"; \
|
||||
if [ -f "/root/docker/setup/01-system.sh" ];then echo "Running the system script";/root/docker/setup/01-system.sh||{ echo "Failed to execute /root/docker/setup/01-system.sh" >&2 && exit 10; };echo "Done running the system script";fi; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Running pre-package commands"; \
|
||||
$SHELL_OPTS; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Setting up and installing packages"; \
|
||||
$SHELL_OPTS; \
|
||||
if [ -n "${PACK_LIST}" ];then echo "Installing packages: $PACK_LIST";echo "${PACK_LIST}" >/root/docker/setup/packages.txt;pkmgr install ${PACK_LIST};fi; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Initializing packages before copying files to image"; \
|
||||
$SHELL_OPTS; \
|
||||
if [ -f "/root/docker/setup/02-packages.sh" ];then echo "Running the packages script";/root/docker/setup/02-packages.sh||{ echo "Failed to execute /root/docker/setup/02-packages.sh" >&2 && exit 10; };echo "Done running the packages script";fi; \
|
||||
echo ""
|
||||
|
||||
COPY ./rootfs/. /
|
||||
COPY ./Dockerfile /root/docker/Dockerfile
|
||||
|
||||
RUN echo "Updating system files "; \
|
||||
$SHELL_OPTS; \
|
||||
echo "$TIMEZONE" >"/etc/timezone"; \
|
||||
touch "/etc/profile" "/root/.profile"; \
|
||||
echo 'hosts: files dns' >"/etc/nsswitch.conf"; \
|
||||
[ "$PHP_VERSION" = "system" ] && PHP_VERSION="php" || true; \
|
||||
PHP_BIN="$(command -v ${PHP_VERSION} 2>/dev/null || true)"; \
|
||||
PHP_FPM="$(ls /usr/*bin/php*fpm* 2>/dev/null || true)"; \
|
||||
pip_bin="$(command -v python3 2>/dev/null || command -v python2 2>/dev/null || command -v python 2>/dev/null || true)"; \
|
||||
py_version="$(command $pip_bin --version | sed 's|[pP]ython ||g' | awk -F '.' '{print $1$2}' | grep '[0-9]' || true)"; \
|
||||
[ "$py_version" -gt "310" ] && pip_opts="--break-system-packages " || pip_opts=""; \
|
||||
[ -f "/usr/share/zoneinfo/${TZ}" ] && ln -sf "/usr/share/zoneinfo/${TZ}" "/etc/localtime" || true; \
|
||||
[ -n "$PHP_BIN" ] && [ -z "$(command -v php 2>/dev/null)" ] && ln -sf "$PHP_BIN" "/usr/bin/php" 2>/dev/null || true; \
|
||||
[ -n "$PHP_FPM" ] && [ -z "$(command -v php-fpm 2>/dev/null)" ] && ln -sf "$PHP_FPM" "/usr/bin/php-fpm" 2>/dev/null || true; \
|
||||
if [ -f "/etc/profile.d/color_prompt.sh.disabled" ]; then mv -f "/etc/profile.d/color_prompt.sh.disabled" "/etc/profile.d/color_prompt.sh";fi ; \
|
||||
{ [ -f "/etc/bash/bashrc" ] && cp -Rf "/etc/bash/bashrc" "/root/.bashrc"; } || { [ -f "/etc/bashrc" ] && cp -Rf "/etc/bashrc" "/root/.bashrc"; } || { [ -f "/etc/bash.bashrc" ] && cp -Rf "/etc/bash.bashrc" "/root/.bashrc"; } || true; \
|
||||
if [ -z "$(command -v "apt-get" 2>/dev/null)" ];then grep -sh -q 'alias quit' "/root/.bashrc" || printf '# Profile\n\n%s\n%s\n%s\n' '. /etc/profile' '. /root/.profile' "alias quit='exit 0 2>/dev/null'" >>"/root/.bashrc"; fi; \
|
||||
if [ "$PHP_VERSION" != "system" ] && [ -e "/etc/php" ] && [ -d "/etc/${PHP_VERSION}" ];then rm -Rf "/etc/php";fi; \
|
||||
if [ "$PHP_VERSION" != "system" ] && [ -n "${PHP_VERSION}" ] && [ -d "/etc/${PHP_VERSION}" ];then ln -sf "/etc/${PHP_VERSION}" "/etc/php";fi; \
|
||||
if [ -f "/root/docker/setup/03-files.sh" ];then echo "Running the files script";/root/docker/setup/03-files.sh||{ echo "Failed to execute /root/docker/setup/03-files.sh" >&2 && exit 10; };echo "Done running the files script";fi; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Custom Settings"; \
|
||||
$SHELL_OPTS; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Setting up users and scripts "; \
|
||||
$SHELL_OPTS; \
|
||||
if [ -f "/root/docker/setup/04-users.sh" ];then echo "Running the users script";/root/docker/setup/04-users.sh||{ echo "Failed to execute /root/docker/setup/04-users.sh" >&2 && exit 10; };echo "Done running the users script";fi; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Running the user init commands"; \
|
||||
$SHELL_OPTS; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Setting OS Settings "; \
|
||||
$SHELL_OPTS; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Custom Applications"; \
|
||||
$SHELL_OPTS; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Running custom commands"; \
|
||||
if [ -f "/root/docker/setup/05-custom.sh" ];then echo "Running the custom script";/root/docker/setup/05-custom.sh||{ echo "Failed to execute /root/docker/setup/05-custom.sh" && exit 10; };echo "Done running the custom script";fi; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Running final commands before cleanup"; \
|
||||
$SHELL_OPTS; \
|
||||
if [ -f "/root/docker/setup/06-post.sh" ];then echo "Running the post script";/root/docker/setup/06-post.sh||{ echo "Failed to execute /root/docker/setup/06-post.sh" >&2 && exit 10; };echo "Done running the post script";fi; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Deleting unneeded files"; \
|
||||
$SHELL_OPTS; \
|
||||
pkmgr clean; \
|
||||
rm -Rf "/config" "/data" || true; \
|
||||
rm -rf /etc/systemd/system/*.wants/* || true; \
|
||||
rm -rf /lib/systemd/system/systemd-update-utmp* || true; \
|
||||
rm -rf /lib/systemd/system/anaconda.target.wants/* || true; \
|
||||
rm -rf /lib/systemd/system/local-fs.target.wants/* || true; \
|
||||
rm -rf /lib/systemd/system/multi-user.target.wants/* || true; \
|
||||
rm -rf /lib/systemd/system/sockets.target.wants/*udev* || true; \
|
||||
rm -rf /lib/systemd/system/sockets.target.wants/*initctl* || true; \
|
||||
rm -Rf /usr/share/doc/* /var/tmp/* /var/cache/*/* /root/.cache/* /usr/share/info/* /tmp/* || true; \
|
||||
if [ -d "/lib/systemd/system/sysinit.target.wants" ];then cd "/lib/systemd/system/sysinit.target.wants" && rm -f $(ls | grep -v systemd-tmpfiles-setup);fi; \
|
||||
if [ -f "/root/docker/setup/07-cleanup.sh" ];then echo "Running the cleanup script";/root/docker/setup/07-cleanup.sh||{ echo "Failed to execute /root/docker/setup/07-cleanup.sh" >&2 && exit 10; };echo "Done running the cleanup script";fi; \
|
||||
echo ""
|
||||
|
||||
RUN echo "Init done"
|
||||
FROM scratch
|
||||
ARG TZ
|
||||
ARG PATH
|
||||
ARG USER
|
||||
ARG TIMEZONE
|
||||
ARG LANGUAGE
|
||||
ARG IMAGE_NAME
|
||||
ARG BUILD_DATE
|
||||
ARG SERVICE_PORT
|
||||
ARG EXPOSE_PORTS
|
||||
ARG BUILD_VERSION
|
||||
ARG IMAGE_VERSION
|
||||
ARG WWW_ROOT_DIR
|
||||
ARG DEFAULT_FILE_DIR
|
||||
ARG DEFAULT_DATA_DIR
|
||||
ARG DEFAULT_CONF_DIR
|
||||
ARG DEFAULT_TEMPLATE_DIR
|
||||
ARG DISTRO_VERSION
|
||||
ARG NODE_VERSION
|
||||
ARG NODE_MANAGER
|
||||
ARG PHP_VERSION
|
||||
ARG PHP_SERVER
|
||||
ARG LICENSE="WTFPL"
|
||||
ARG ENV_PORTS="${EXPOSE_PORTS}"
|
||||
|
||||
USER ${USER}
|
||||
WORKDIR /root
|
||||
|
||||
LABEL maintainer="CasjaysDev <docker-admin@casjaysdev.pro>"
|
||||
LABEL org.opencontainers.image.vendor="CasjaysDev"
|
||||
LABEL org.opencontainers.image.authors="CasjaysDev"
|
||||
LABEL org.opencontainers.image.description="Containerized version of ${IMAGE_NAME}"
|
||||
LABEL org.opencontainers.image.title="${IMAGE_NAME}"
|
||||
LABEL org.opencontainers.image.base.name="${IMAGE_NAME}"
|
||||
LABEL org.opencontainers.image.authors="${LICENSE}"
|
||||
LABEL org.opencontainers.image.created="${BUILD_DATE}"
|
||||
LABEL org.opencontainers.image.version="${BUILD_VERSION}"
|
||||
LABEL org.opencontainers.image.schema-version="${BUILD_VERSION}"
|
||||
LABEL org.opencontainers.image.url="docker.io"
|
||||
LABEL org.opencontainers.image.source="docker.io"
|
||||
LABEL org.opencontainers.image.vcs-type="Git"
|
||||
LABEL org.opencontainers.image.revision="${BUILD_VERSION}"
|
||||
LABEL org.opencontainers.image.source="https://github.com/casjaysdevdocker/lenpaste"
|
||||
LABEL org.opencontainers.image.documentation="https://github.com/casjaysdevdocker/lenpaste"
|
||||
LABEL com.github.containers.toolbox="false"
|
||||
|
||||
ENV ENV=~/.bashrc
|
||||
ENV USER="${USER}"
|
||||
ENV PATH="${PATH}"
|
||||
ENV TZ="${TIMEZONE}"
|
||||
ENV SHELL="/bin/bash"
|
||||
ENV TIMEZONE="${TZ}"
|
||||
ENV LANG="${LANGUAGE}"
|
||||
ENV TERM="xterm-256color"
|
||||
ENV PORT="${SERVICE_PORT}"
|
||||
ENV ENV_PORTS="${ENV_PORTS}"
|
||||
ENV CONTAINER_NAME="${IMAGE_NAME}"
|
||||
ENV HOSTNAME="casjaysdev-${IMAGE_NAME}"
|
||||
ENV PHP_SERVER="${PHP_SERVER}"
|
||||
ENV NODE_VERSION="${NODE_VERSION}"
|
||||
ENV NODE_MANAGER="${NODE_MANAGER}"
|
||||
ENV PHP_VERSION="${PHP_VERSION}"
|
||||
ENV DISTRO_VERSION="${IMAGE_VERSION}"
|
||||
ENV WWW_ROOT_DIR="${WWW_ROOT_DIR}"
|
||||
|
||||
COPY --from=build /. /
|
||||
|
||||
VOLUME [ "/config","/data" ]
|
||||
|
||||
EXPOSE ${SERVICE_PORT} ${ENV_PORTS}
|
||||
|
||||
ENTRYPOINT [ "tini","--","/usr/local/bin/entrypoint.sh", "start" ]
|
||||
HEALTHCHECK --start-period=10m --interval=5m --timeout=15s CMD [ "/usr/local/bin/entrypoint.sh", "healthcheck" ]
|
||||
71
Jenkinsfile
vendored
Normal file
71
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
pipeline {
|
||||
agent {
|
||||
label 'arm64 || amd64'
|
||||
}
|
||||
|
||||
options {
|
||||
buildDiscarder(logRotator(numToKeepStr: '10'))
|
||||
timeout(time: 60, unit: 'MINUTES')
|
||||
timestamps()
|
||||
}
|
||||
|
||||
environment {
|
||||
DOCKER_REGISTRY = 'docker.io'
|
||||
IMAGE_NAME = 'casjaysdevdocker/lenpaste'
|
||||
DOCKER_BUILDKIT = '1'
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
steps {
|
||||
checkout scm
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build Multi-Arch Image') {
|
||||
steps {
|
||||
script {
|
||||
def buildArgs = ""
|
||||
if (fileExists('.env.scripts')) {
|
||||
buildArgs = "--build-arg-file .env.scripts"
|
||||
}
|
||||
|
||||
sh """
|
||||
docker buildx create --use --name mybuilder || true
|
||||
docker buildx build \\
|
||||
--platform linux/amd64,linux/arm64 \\
|
||||
--tag ${DOCKER_REGISTRY}/${IMAGE_NAME}:latest \\
|
||||
--tag ${DOCKER_REGISTRY}/${IMAGE_NAME}:\${BUILD_NUMBER} \\
|
||||
${buildArgs} \\
|
||||
--push .
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Test') {
|
||||
steps {
|
||||
script {
|
||||
sh """
|
||||
docker run --rm --platform linux/\$(uname -m) \\
|
||||
${DOCKER_REGISTRY}/${IMAGE_NAME}:latest \\
|
||||
/bin/sh -c 'echo "Container test passed"'
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
always {
|
||||
sh 'docker buildx rm mybuilder || true'
|
||||
cleanWs()
|
||||
}
|
||||
success {
|
||||
echo 'Build completed successfully!'
|
||||
}
|
||||
failure {
|
||||
echo 'Build failed!'
|
||||
}
|
||||
}
|
||||
}
|
||||
13
LICENSE.md
Normal file
13
LICENSE.md
Normal file
@@ -0,0 +1,13 @@
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (C) 2024 casjay <git-admin@casjaysdev.pro>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified
|
||||
copies of this license document, and changing it is allowed as long
|
||||
as the name is changed.
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
1. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
78
README.md
Normal file
78
README.md
Normal file
@@ -0,0 +1,78 @@
|
||||
## 👋 Welcome to lenpaste 🚀
|
||||
|
||||
lenpaste README
|
||||
|
||||
|
||||
## Install my system scripts
|
||||
|
||||
```shell
|
||||
sudo bash -c "$(curl -q -LSsf "https://github.com/systemmgr/installer/raw/main/install.sh")"
|
||||
sudo systemmgr --config && sudo systemmgr install scripts
|
||||
```
|
||||
|
||||
## Automatic install/update
|
||||
|
||||
```shell
|
||||
dockermgr update lenpaste
|
||||
```
|
||||
|
||||
## Install and run container
|
||||
|
||||
```shell
|
||||
mkdir -p "$HOME/.local/share/srv/docker/lenpaste/rootfs"
|
||||
git clone "https://github.com/dockermgr/lenpaste" "$HOME/.local/share/CasjaysDev/dockermgr/lenpaste"
|
||||
cp -Rfva "$HOME/.local/share/CasjaysDev/dockermgr/lenpaste/rootfs/." "$HOME/.local/share/srv/docker/lenpaste/rootfs/"
|
||||
docker run -d \
|
||||
--restart always \
|
||||
--privileged \
|
||||
--name casjaysdevdocker-lenpaste \
|
||||
--hostname lenpaste \
|
||||
-e TZ=${TIMEZONE:-America/New_York} \
|
||||
-v "$HOME/.local/share/srv/docker/casjaysdevdocker-lenpaste/rootfs/data:/data:z" \
|
||||
-v "$HOME/.local/share/srv/docker/casjaysdevdocker-lenpaste/rootfs/config:/config:z" \
|
||||
-p 80:80 \
|
||||
casjaysdevdocker/lenpaste:latest
|
||||
```
|
||||
|
||||
## via docker-compose
|
||||
|
||||
```yaml
|
||||
version: "2"
|
||||
services:
|
||||
ProjectName:
|
||||
image: casjaysdevdocker/lenpaste
|
||||
container_name: casjaysdevdocker-lenpaste
|
||||
environment:
|
||||
- TZ=America/New_York
|
||||
- HOSTNAME=lenpaste
|
||||
volumes:
|
||||
- "$HOME/.local/share/srv/docker/casjaysdevdocker-lenpaste/rootfs/data:/data:z"
|
||||
- "$HOME/.local/share/srv/docker/casjaysdevdocker-lenpaste/rootfs/config:/config:z"
|
||||
ports:
|
||||
- 80:80
|
||||
restart: always
|
||||
```
|
||||
|
||||
## Get source files
|
||||
|
||||
```shell
|
||||
dockermgr download src casjaysdevdocker/lenpaste
|
||||
```
|
||||
|
||||
OR
|
||||
|
||||
```shell
|
||||
git clone "https://github.com/casjaysdevdocker/lenpaste" "$HOME/Projects/github/casjaysdevdocker/lenpaste"
|
||||
```
|
||||
|
||||
## Build container
|
||||
|
||||
```shell
|
||||
cd "$HOME/Projects/github/casjaysdevdocker/lenpaste"
|
||||
buildx
|
||||
```
|
||||
|
||||
## Authors
|
||||
|
||||
🤖 casjay: [Github](https://github.com/casjay) 🤖
|
||||
⛵ casjaysdevdocker: [Github](https://github.com/casjaysdevdocker) [Docker](https://hub.docker.com/u/casjaysdevdocker) ⛵
|
||||
Reference in New Issue
Block a user