Compare commits

...

56 Commits

Author SHA1 Message Date
f3797b5660
Removing feature to persist session since is not possible because OAuth process of github.
Some checks failed
Build and Push Docker Image ARM64 / docker (push) Failing after 3m19s
2025-04-14 16:46:35 +00:00
a1e53a6624
Trying to fix issue of recreate the tunnel.
Some checks failed
Build and Push Docker Image ARM64 / docker (push) Failing after 3m14s
2025-04-14 01:13:35 +00:00
3da90aa1a4
Fixing typo. 2025-04-14 00:06:02 +00:00
aa9afba282
Trying to fix existing tunnel. 2025-04-13 23:44:58 +00:00
0fe46e635d
Trying to fix issue if data authentication already exist.
Some checks failed
Build and Push Docker Image ARM64 / docker (push) Failing after 1m52s
2025-04-13 04:27:21 +00:00
d84caeb8cf
Trying to fix issue when restart. 2025-04-13 03:57:47 +00:00
68e7aa99d8
Trying to fix issue when restart. 2025-04-13 03:30:11 +00:00
8d5deeeef0
Updating version of vscode and adding feature to restart.
Some checks failed
Build and Push Docker Image ARM64 / docker (push) Failing after 1m27s
2025-04-13 00:51:32 +00:00
0c8c0d1068
Updating vscode version.
Some checks failed
Build and Push Docker Image ARM64 / docker (push) Failing after 14m39s
2025-03-07 00:02:34 +00:00
fc0c473ce4
Updating vscode version
Some checks failed
Build and Push Docker Image ARM64 / docker (push) Failing after 2m53s
2025-02-19 20:04:53 +00:00
521c51314a
Updating version of vscode. Updating to version 3.1.17 2024-12-17 15:47:33 +00:00
23b4140fc5
Updating version of vscode. 2024-11-19 15:08:35 +00:00
a4e9a02d87
Updating version of vscode. 2024-11-01 10:47:10 -06:00
6fb7085164
Updating version to version 3.1.14 2024-10-03 20:08:51 +00:00
5754ef90a2
Merge branch 'master' of github.com:aleleba/aleleba-vscode-dockerfile-configuration 2024-10-03 20:06:17 +00:00
3b99e2546f
Fixing github actions workflow. Updating to version 3.1.13 2024-09-10 14:59:04 -06:00
8ee5f0376f
Trying to fix issue, updating to version 3.1.12 2024-09-10 14:46:28 -06:00
b676e5245c
Trying to fix build errors. Updating to version 3.1.11 2024-09-10 14:40:24 -06:00
aa71cb3be5
Trying to fix build issues. updating to version 3.1.10 2024-09-10 14:33:03 -06:00
40a58d6a85
Triying to fix issue on building. Updating to version 3.1.9 2024-09-10 13:59:32 -06:00
54c7bd3365
Trying to fix dockerfile on building. Updating to version 3.1.8 2024-09-10 13:43:52 -06:00
862baf44b7
Trying to fix builder of github actions issue. Updating to version 3.1.7 2024-09-10 13:38:03 -06:00
1b4baca42c
Updating version of vscode. Updating to version 3.1.6 2024-09-10 12:10:04 -06:00
3e130f4bf0
Updating version of vscode. Updating to version 3.1.5 2024-08-02 11:10:23 -06:00
4c16938db3
Updating docs. Updating to version 3.1.4 2024-06-15 23:58:09 -06:00
cd7181d6ec
Updating the latest version of vscode. Updting to version 3.1.3 2024-06-11 10:31:02 -06:00
819e72324c
Updating to new version of vscode. Updating to version 3.1.3. 2024-06-11 16:21:24 +00:00
183e04cde2
Update permissions for SSH files and increment version number to 3.1.2 2024-04-24 22:17:32 +00:00
b33c4cbbe6
Fixing permissions on .ssh directory. Update to version 3.1.1 2024-04-24 12:47:13 -06:00
974914126f
Adding all responsability to deploy to both platforms to github actions. Adding officially support to multiarch. Updating to version 3.1.0 2024-04-24 12:26:58 -06:00
ae16a7be7f
Trying to fix architecture issue. Updating to version 3.0.40 2024-04-24 12:12:26 -06:00
998701be6c
Trying to fic issue with building process. Updating to version 3.0.39 2024-04-24 11:58:07 -06:00
b30b350fe4
Trying to build with github actions the building of arm arch. updating to version 3.0.38 2024-04-24 11:37:47 -06:00
1b278e0eea
Adding hooks to multiarch building. Updating to version 3.0.37 2024-04-24 11:17:06 -06:00
e88ab12701
Update permissions for .ssh folder and increment version number to 3.0.36 2024-04-21 11:55:35 +00:00
694039fb29
Update entrypoint.sh and version.txt to version 3.0.35 2024-04-21 11:39:37 +00:00
8ffbd5d818
Update entrypoint.sh and version.txt to version 3.0.34 2024-04-21 06:55:40 +00:00
c2f5311948
Update ownership of user's home directory and increment version number to 3.0.33 2024-04-21 01:24:57 +00:00
f91d1c56a1
Update entrypoint.sh and version.txt Updating to version 3.0.32 2024-04-19 15:50:09 +00:00
42b7bd30e7
Update Node.js installation script on readmefile and increment version number to 3.0.31 2024-04-19 14:47:49 +00:00
0f51996adc
Update entrypoint.sh and readme.md files Updating to version 3.0.30 2024-04-19 14:31:21 +00:00
8dea73ec95
Move .bashrc and .profile files to user's home directory, update version to 3.0.29 2024-04-19 11:42:39 +00:00
8b71265807
Update readme.md and version.txt Updating to version 3.0.28 2024-04-19 08:28:53 +00:00
d9df63f836
Update entrypoint.sh and version.txt Updating to version 3.0.27 2024-04-19 07:49:00 +00:00
c9799b9a77
Update script execution in entrypoint.sh and bump version to 3.0.26 2024-04-19 06:38:38 +00:00
de3fda3c09
Update environment and version to 3.0.25 2024-04-18 06:37:34 +00:00
559cd39a66
Update entrypoint.sh and version.txt Updating to version 3.0.24 2024-04-18 05:40:21 +00:00
4bbe7f51cb
Update environment variable handling and version number to 3.0.23 2024-04-18 05:22:53 +00:00
b0b9497107
Update entrypoint.sh and version.txt Updating to version 3.0.22 2024-04-18 05:07:52 +00:00
1631237881
Update entrypoint.sh and version.txt Updating to version 3.0.21 2024-04-18 04:32:59 +00:00
6a6947d855
Move .bashrc and .profile files to user's home directory Updating to version 3.0.20 2024-04-17 21:52:11 +00:00
65644a8b14
Fix ownership issues in entrypoint.sh and update version to 3.0.19 Updating to version 3.0.19 2024-04-17 20:59:45 +00:00
03b01cbae3
Update entrypoint.sh and version.txt Updating to version 3.0.18 2024-04-17 20:45:13 +00:00
b5c8652d94
Update user creation and version number. Updating to version 17 2024-04-17 19:30:31 +00:00
9f101b45cc
Update entrypoint.sh and version.txt Updating to version 3.0.16 2024-04-17 18:59:23 +00:00
89fd905384
Update LS_COLORS_VALUE and version.txt Updating to version 3.0.15 2024-04-16 04:28:23 +00:00
7 changed files with 298 additions and 48 deletions

118
.bashrc Normal file
View File

@ -0,0 +1,118 @@
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
export LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:"

30
.github/workflows/main-workflow.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: Build and Push Docker Image ARM64
on:
push:
branches: [ master ]
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: aleleba/vscode:latest
platforms: linux/amd64,linux/arm64

27
.profile Normal file
View File

@ -0,0 +1,27 @@
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi

View File

@ -1,8 +1,7 @@
FROM ubuntu:22.04 FROM ubuntu:22.04
# Update the package list, install sudo, create a non-root user, and grant password-less sudo permissions # Update the package list, install sudo, create a non-root user, and grant password-less sudo permissions
RUN apt update RUN apt update && apt install -y sudo
RUN apt install -y sudo
RUN sudo apt-get update RUN sudo apt-get update
#Instalando Curl #Instalando Curl
@ -13,10 +12,10 @@ RUN sudo apt-get install -y wget
RUN sudo apt-get install -y jq RUN sudo apt-get install -y jq
RUN sudo apt-get update RUN sudo apt-get update
RUN sudo apt-get install dumb-init RUN sudo apt-get install -y dumb-init
RUN ARCH="$(dpkg --print-architecture)" \ RUN ARCH="$(dpkg --print-architecture)" \
&& curl -fsSL "https://github.com/boxboat/fixuid/releases/download/v0.6.0/fixuid-0.6.0-linux-$ARCH.tar.gz" | tar -C /usr/local/bin -xzf - \ && curl -fsSL "https://github.com/boxboat/fixuid/releases/download/v0.6.0/fixuid-0.6.0-linux-${ARCH}.tar.gz" | tar -C /usr/local/bin -xzf - \
&& chown root:root /usr/local/bin/fixuid \ && chown root:root /usr/local/bin/fixuid \
&& chmod 4755 /usr/local/bin/fixuid \ && chmod 4755 /usr/local/bin/fixuid \
&& mkdir -p /etc/fixuid \ && mkdir -p /etc/fixuid \
@ -29,18 +28,24 @@ RUN ARCH="$(dpkg --print-architecture)" \
RUN curl -sL https://aka.ms/DevTunnelCliInstall | bash RUN curl -sL https://aka.ms/DevTunnelCliInstall | bash
#Instalando VSCode #Instalando VSCode
RUN sudo apt-get update && sudo apt-get install -y gnupg2 RUN ARCH="$(dpkg --print-architecture)" \
RUN sudo apt-get install -y software-properties-common && sudo apt-get update \
RUN sudo wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add - && sudo apt-get install -y gnupg2 \
RUN sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" && sudo apt-get install -y software-properties-common \
RUN sudo apt update && sudo wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add - \
RUN sudo apt install code -y && sudo add-apt-repository "deb [arch=${ARCH}] https://packages.microsoft.com/repos/vscode stable main" \
&& sudo apt-get update \
&& sudo DEBIAN_FRONTEND=noninteractive apt-get install -y code
#Making home writteable #Making home writable
RUN sudo chmod -R a+rwX /home RUN sudo chmod -R a+rwX /home
RUN sudo sysctl -w fs.inotify.max_user_watches=524288 RUN sudo sysctl -w fs.inotify.max_user_watches=524288
ADD ./.bashrc /usr/bin/.bashrc
RUN sudo chmod +x /usr/bin/.bashrc
ADD ./.profile /usr/bin/.profile
RUN sudo chmod +x /usr/bin/.profile
ADD ./entrypoint.sh /usr/bin/entrypoint.sh ADD ./entrypoint.sh /usr/bin/entrypoint.sh
RUN sudo chmod +x /usr/bin/entrypoint.sh RUN sudo chmod +x /usr/bin/entrypoint.sh

View File

@ -16,7 +16,7 @@ if [[ -v VSCODE_TUNNEL_NAME && -n "${VSCODE_TUNNEL_NAME}" ]]; then
fi fi
# List all environment variables # List all environment variables
sudo env | printenv |
# Filter variables that start with GLOBAL_ENV_ # Filter variables that start with GLOBAL_ENV_
grep -E '^GLOBAL_ENV_' | grep -E '^GLOBAL_ENV_' |
@ -31,64 +31,94 @@ sed 's/^GLOBAL_ENV_//' |
while IFS= read -r line while IFS= read -r line
do do
if ! grep -q "^${line%=*}=" /etc/environment; then if ! grep -q "^${line%=*}=" /etc/environment; then
echo "export $line" | sudo tee -a /etc/environment echo "" >> /etc/environment
echo "export $line" >> /etc/environment
fi
done
# List all environment variables
printenv |
# Filter variables that start with USER_ENV_
grep -E '^USER_ENV_' |
# Remove the USER_ENV_ prefix
sed 's/^USER_ENV_//' |
# Append the result to /usr/bin/.bashrc
while IFS= read -r line
do
# Check if the current user is root
if [ "$(id -u)" = "0" ]; then
echo "" >> /usr/bin/.bashrc
echo "export $line" >> /usr/bin/.bashrc
else
echo "" >> /home/${HOME_USER}/.bashrc
echo "export $line" >> /home/${HOME_USER}/.bashrc
fi fi
done done
USER="$HOME_USER" USER="$HOME_USER"
if ! id -u $HOME_USER > /dev/null 2>&1; then if ! id -u $HOME_USER > /dev/null 2>&1; then
sudo adduser --disabled-password --gecos "" ${HOME_USER} sudo adduser --disabled-password --gecos "" --uid 1000 ${HOME_USER}
sudo echo "$HOME_USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/nopasswd > /dev/null sudo echo "$HOME_USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/nopasswd > /dev/null
# Check if the .bashrc file exists, if not, create it
if [ ! -f /home/${HOME_USER}/.bashrc ]; then
sudo touch /home/${HOME_USER}/.bashrc
fi
# Change the ownership of the .bashrc file
sudo chown ${HOME_USER} /home/${HOME_USER}/.bashrc
# List all environment variables
sudo env |
# Filter variables that start with USER_ENV_
grep -E '^USER_ENV_' |
# Remove the USER_ENV_ prefix
sed 's/^USER_ENV_//' |
# Append the result to /home/${HOME_USER}/.bashrc
while IFS= read -r line
do
echo "export $line" | sudo -u ${HOME_USER} tee -a /home/${HOME_USER}/.bashrc
done
# Creating .vscode folder if it doesn't exist # Creating .vscode folder if it doesn't exist
if [ ! -d "/home/${HOME_USER}/.vscode" ]; then if [ ! -d "/home/${HOME_USER}/.vscode" ]; then
sudo mkdir -p /home/${HOME_USER}/.vscode sudo mkdir -p /home/${HOME_USER}/.vscode
fi fi
# Changing the property of the directory /home/${HOME_USER}/.vscode # Changing the property of the directory /home/${HOME_USER}/.vscode
sudo chown -R ${HOME_USER}: /home/${HOME_USER}/.vscode sudo chown -R ${HOME_USER} /home/${HOME_USER}/.vscode
fi fi
# Then execute entrypoint.sh # Then execute entrypoint.sh
if [ "$HOME_USER" != "$(whoami)" ]; then if [ "$HOME_USER" != "$(whoami)" ]; then
exec sudo -u $HOME_USER bash -c "source /etc/environment; /usr/bin/entrypoint.sh" exec sudo -u $HOME_USER bash -c "source /etc/environment; /usr/bin/entrypoint.sh"
else
sudo chown -R ${HOME_USER} /home/${HOME_USER}
if [ -d "/home/${HOME_USER}/.ssh" ]; then
sudo chmod 755 /home/${HOME_USER}/.ssh
sudo chmod -R 600 /home/${HOME_USER}/.ssh/*
# Check if any .pub files exist in the .ssh directory
for file in /home/${HOME_USER}/.ssh/*.pub; do
if [ -f "$file" ]; then
sudo chmod 644 "$file"
fi
done
# Check if the known_hosts file exists in the .ssh directory
if [ -f "/home/${HOME_USER}/.ssh/known_hosts" ]; then
sudo chmod 644 /home/${HOME_USER}/.ssh/known_hosts
fi
fi
fi
# Move the .bashrc file to the user's home directory if it doesn't exist
if [ ! -f "/home/${HOME_USER}/.bashrc" ]; then
sudo mv /usr/bin/.bashrc /home/${HOME_USER}/.bashrc
sudo chown ${HOME_USER} /home/${HOME_USER}/.bashrc
else
sudo rm -f /usr/bin/.bashrc
fi
# Move the .profile file to the user's home directory if it doesn't exist
if [ ! -f "/home/${HOME_USER}/.profile" ]; then
sudo mv /usr/bin/.profile /home/${HOME_USER}/.profile
sudo chown ${HOME_USER} /home/${HOME_USER}/.profile
else
sudo rm -f /usr/bin/.profile
fi fi
# Find .sh files in /usr/bin/custom-scripts and execute them in order # Find .sh files in /usr/bin/custom-scripts and execute them in order
for script in $(find /usr/bin/custom-scripts -name "*.sh" | sort); do for script in $(find /usr/bin/custom-scripts -name "*.sh" | sort); do
chmod +x $script chmod +x $script
if [[ $script == *"sudo"* ]]; then
sudo -u $HOME_USER bash -c "source /etc/environment; sudo $script"
else
sudo -u $HOME_USER bash -c "source /etc/environment; $script" sudo -u $HOME_USER bash -c "source /etc/environment; $script"
fi
done done
# Add LS_COLORS variable to .bashrc
LS_COLORS_VALUE="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:"
echo "export LS_COLORS=\"\$LS_COLORS_VALUE\"" >> ~/.bashrc
#Creating extensions folder #Creating extensions folder
if [ ! -d "/home/${HOME_USER}/.config/Code" ]; then if [ ! -d "/home/${HOME_USER}/.config/Code" ]; then
sudo mkdir -p /home/${HOME_USER}/.config/Code sudo mkdir -p /home/${HOME_USER}/.config/Code

View File

@ -122,7 +122,7 @@ Open the file in a text editor and write your script. Here's an example that ins
```bash ```bash
#!/bin/bash #!/bin/bash
# Installing Node.js with NVM # Installing Node.js with NVM
curl -O https://raw.githubusercontent.com/creationix/nvm/master/install.sh sudo curl -O https://raw.githubusercontent.com/creationix/nvm/master/install.sh
bash install.sh bash install.sh
source ~/.nvm/nvm.sh source ~/.nvm/nvm.sh
nvm install --lts nvm install --lts
@ -132,11 +132,51 @@ nvm use default && npm install -g @vscode/vsce
``` ```
The #!/bin/bash line at the top of the script tells the system that this script should be run with the Bash shell. The #!/bin/bash line at the top of the script tells the system that this script should be run with the Bash shell.
#### Note on sudo privileges
If the script name includes the word "sudo", the script will be run with root privileges. This is useful if your script needs to perform operations that require superuser privileges.
For instance, if you have a script named `install_sudo_package.sh`, this script will be run with root privileges due to the inclusion of "sudo" in the file name.
Please be aware of the security implications when running scripts with root privileges. Ensure that your script does not perform any unsafe or destructive operations when run with these privileges.
### 3. Run your Docker container ### 3. Run your Docker container
When you start your Docker container, all .sh files in the /usr/bin/custom-scripts directory will be automatically executed in alphabetical order. The environment variables from the /etc/environment file will be loaded before each script is executed. When you start your Docker container, all .sh files in the /usr/bin/custom-scripts directory will be automatically executed in alphabetical order. The environment variables from the /etc/environment file will be loaded before each script is executed.
Remember to replace install_node.sh with the name of your script and ./custom-scripts with the actual path to the directory on your host machine that maps to the /usr/bin/custom-scripts volume in the Docker container. Remember to replace install_node.sh with the name of your script and ./custom-scripts with the actual path to the directory on your host machine that maps to the /usr/bin/custom-scripts volume in the Docker container.
## Using this image as a base image in a Dockerfile
To use this image as a base image in a Dockerfile, you can add the following line to the top of your Dockerfile and you can install any additional packages you need, here an example installing nvm and nodejs in a `Dockerfile`:
```
FROM aleleba/vscode:latest
ENV HOME_USER=vscode
RUN sudo adduser --disabled-password --gecos "" --uid 1000 ${HOME_USER}
RUN sudo echo "$HOME_USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/nopasswd > /dev/null
USER ${HOME_USER}
WORKDIR /home/${HOME_USER}
# Installing node.js and NVM
SHELL ["/bin/bash", "--login", "-i", "-c"]
RUN curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
RUN nvm install --lts
RUN nvm alias default lts/*
SHELL ["/bin/sh", "-c"]
RUN echo 'source ~/.nvm/nvm.sh' >> ~/.bashrc
# Finishing installing node.js and NVM
```
> **Note:** If you are using this image as a base image in a Dockerfile, ensure that the value of `HOME_USER` is the same as the one you will use when creating the container. This is necessary to ensure that all configurations and packages are installed in the correct user directory.
> **Note:** To grant access to the server, please log into https://github.com/login/device and use the code XXXX-XXXX. You can view the container logs to get the code.
## Contributing ## Contributing
If you'd like to contribute to this project, please fork the repository and create a pull request. If you'd like to contribute to this project, please fork the repository and create a pull request.

View File

@ -1 +1 @@
3.0.14 3.2.7