Compare commits

..

84 Commits

Author SHA1 Message Date
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
ac320909ab Update entrypoint.sh and version.txt . Updating to version 3.0.14 2024-04-16 04:01:48 +00:00
ab2bdc80a6 Update LS_COLORS variable and install extensions. Updating to version 3.0.13 2024-04-16 02:42:12 +00:00
6f1beacbd0 Update LS_COLORS variable and increment version to 3.0.12 2024-04-15 17:22:19 +00:00
b7d52df70b Trying to fix issue. updating to version 3.0.11 2024-04-15 08:02:20 +00:00
5dbb07fd80 Trying to fix issue. Updating to version 3.0.10 2024-04-15 06:36:28 +00:00
3f6a9f6626 Updating to version 3.0.9 2024-04-15 05:59:09 +00:00
13e642be86 Trying to fix issue of .vscode directory. Updating to version 3.0.8 2024-04-15 05:06:13 +00:00
ba267c2494 Trying to fix issue of .bashrc not exist. Updating to version 3.0.7 2024-04-15 04:33:36 +00:00
67cc921484 Trying to fix environment user issue. Updating to version 3.0.6 2024-04-15 04:17:13 +00:00
15de59c6e7 Trying to fix sexond issue with the same variable. Updating to version 3.0.5 2024-04-15 03:41:28 +00:00
7bf78c1935 Fixing the second issue of the same variable. Updating to version. 3.0.4 2024-04-15 03:23:49 +00:00
e2ba0edd34 Trying to fix Environment variable VSCODETUNNERNAME error. Updating to version 3.0.3 2024-04-15 03:07:36 +00:00
e74fb7d054 Trying to fix the Environment VSCODE NAME TUNNEL issue. Updating to version 3.0.2 2024-04-15 02:40:38 +00:00
b027cd07a0 Fixing the TUNNEL_NAME issue. Updating to version 3.0.1 2024-04-15 01:55:12 +00:00
66ed2b4950 Making Breaking changes to use custom bash scripts. Updating to version 3.0.0 2024-04-14 22:50:55 +00:00
d596af8a2f Trying to fix missing environment variables for root user. Updating to version 2.0.58 2024-04-12 10:28:23 +00:00
680e3810b6 Trying to fix issue of running entrypont.sh as root. Updating to version 2.0.57 2024-04-12 08:47:28 +00:00
6519cc3ef9 Trying to fix issue of running entrypont.sh as root. Updating to version 2.0.56 2024-04-12 08:42:37 +00:00
c27e148488 Trying to fix vscode issue. Updating to version 2.0.55 2024-04-12 07:42:57 +00:00
cd8b5c19e1 Trying to fix issue with vscode user deletion. updating to version 2.0.54 2024-04-12 05:38:00 +00:00
a6e4296f25 Trying to fix issue when deleting vscode user. Updating to version 2.0.53 2024-04-12 04:59:14 +00:00
08cf40624d Trying to fix issue of deleting vscode user. Updating to version 2.0.52 2024-04-12 04:06:17 +00:00
a3b5fe1d6d Trying to fix home variable. Updating to version 2.0.51 2024-04-12 03:18:12 +00:00
99812ff71c Trying to fix error of deleting vscode user. Updating to version 2.0.50 2024-04-12 02:05:26 +00:00
d8a8162ffd Making the latest changes Updating to version 2.0.49 2024-04-11 23:17:23 +00:00
32d405aa80 Deleting vscode user when ${HOME_USER} exist. Updating to version 2.0.48 2024-04-11 22:30:56 +00:00
2a98fcce78 Trying to fix issue. Updating to version 2.0.47 2024-04-11 20:29:41 +00:00
3ab91f9f5f Trying to fix issue. Updating to version 2.0.46 2024-04-11 04:45:09 +00:00
840fdfaf1e Trying to fix issue. Updating to version 2.0.45 2024-04-10 12:24:50 +00:00
f7a5094cc3 Trying to fix issue. Updating to version 2.0.44 2024-04-10 11:38:24 +00:00
22f0003c53 Trying to fix issue. Updating to version 2.0.43 2024-04-10 10:24:03 +00:00
b08429c9ae Fixing permissions of tunnel. Updating to version 2.0.42 2024-04-10 09:35:28 +00:00
7f81f891ab Trying to fix issue. Updating to version 2.0.41 2024-04-10 08:49:31 +00:00
66c96f1fe7 Fixing issue of sed. Updating to version 2.0.40 2024-04-10 08:03:53 +00:00
1e5523c1f7 Fixing errors of user. Updating to version 2.0.39 2024-04-10 07:24:41 +00:00
390f9cdc15 Trying to fix issue with environment variables. Updating to version 2.0.38 2024-04-10 06:34:01 +00:00
f9503fe827 Trying to fix user. Updating to version 2.0.37 2024-04-10 06:23:37 +00:00
c50b9e969f Trying to fix user PATH issue. Updating to version 2.0.36 2024-04-10 02:17:37 +00:00
f9b4e4644a Changing the way is login the HOME_USER. Updating to version 2.0.35 2024-04-10 01:10:43 +00:00
01410a3ccd Cleaning code and fixing vscode user not working. Updating to version. 2.0.34 2024-04-09 21:47:37 +00:00
cb4bf58db9 Fixing issue of permissions on /home/${HOME_USER} directory. Updating to version 2.0.32 2024-04-09 20:46:54 +00:00
ed98e9a48c Fixing colors of Terminal and entrances of HOME_USER in .bashrc. Updating to version 2.0.31 2024-04-09 20:06:56 +00:00
2ab5fcffc7 Trying to fix user issue. Updating to version 2.0.30 2024-04-09 03:50:29 +00:00
c1acddcc6e Trying to fix issue in user. updating to version 2.0.29 2024-04-09 03:07:15 +00:00
a9b021cebe Trying to fix issue. updating to version 2.0.28 2024-04-09 01:56:06 +00:00
fd7e35cf34 Trying to fix user issue. Updating version to 2.0.27 2024-04-09 01:04:04 +00:00
f929aaac63 Trying to fix user issue. Updating to version 2.0.26 2024-04-09 00:21:44 +00:00
c1affb8781 making reverse of the changes. Updating to version 2.0.25 2024-04-08 21:31:42 +00:00
dfeddf9688 Updating package updating to version 2.0.24 2024-04-07 04:20:07 +00:00
fe2a226190 Trying to fix issue. Updating to version 2.0.23 2024-04-06 23:49:46 +00:00
a983adf4ad Se quita la parte del usuario de Home user para solo ejecutar el primer comando de inicializacion. Se sube a version 2.0.22 2024-04-06 22:51:29 +00:00
374d13fe6c Trying to fix. updating to version 2.0.21 2024-04-06 01:58:10 +00:00
d4391139b2 Trying to fix issue. Updating to version 2.0.20 2024-04-06 01:09:50 +00:00
13571867ca Trying to fix users issue updating to version 2.0.19 2024-04-05 23:44:48 +00:00
52b9e7a411 Trying to fix users issue. Updating to version 2.0.18 2024-04-05 21:03:19 +00:00
04e26f2afc Trying to fix issue. Updating to version 2.0.17 2024-03-30 04:56:24 +00:00
dddaf129f4 Trying to fix. Updating to version 2.0.16 2024-03-30 03:15:32 +00:00
6525dc4c7e Trying to fix issue. updating to version 2.0.15 2024-03-30 01:28:33 +00:00
b3609b3d0b Trying to fix adding environment variables to app. 2024-03-29 22:35:02 +00:00
dd283a2c5f Adding the environment variables of vscode to home user. Updating to version 2.0.13 2024-03-19 19:50:04 +00:00
18fe10675c Updating version to version 2.0.12 and trying to fix isuue. 2024-03-05 22:23:30 +00:00
aabc21eac2 Trying to fix the issue. Updating to version 2.0.11 2024-03-05 20:47:59 +00:00
50708112ac Trying to fix again the issue. Updating to version 2.0.10 2024-03-05 20:02:48 +00:00
f29f99181e Trying to fix. Updatin to version 2.0.9 2024-02-15 23:27:33 +00:00
8e9ef7bfa9 Trying to fix issue. updating to version 2.0.8 2024-02-15 20:18:50 +00:00
762ff44dc8 Fixing sudo issue. 2024-02-15 18:56:28 +00:00
ac7a82f0ca Trying to fix issue. Updating to version 2.0.6 2024-02-15 18:41:29 +00:00
9bac2433a6 Trying to fix. Updating to version 2.0.5 2024-02-15 06:23:40 +00:00
d8a291c82d Trying to fix. Version 2.0.4 2024-02-15 04:07:06 +00:00
6 changed files with 306 additions and 46 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:"

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

@ -12,8 +12,8 @@ RUN sudo apt-get install -y wget
#Instalando jq
RUN sudo apt-get install -y jq
RUN adduser --uid 1001 --gecos '' --disabled-password vscode \
&& echo "vscode ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd
RUN sudo apt-get update
RUN sudo apt-get install dumb-init
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 - \
@ -41,11 +41,11 @@ RUN sudo chmod -R a+rwX /home
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
RUN sudo chmod +x /usr/bin/entrypoint.sh
USER 1000
ENV USER=vscode
WORKDIR /home/vscode
ENTRYPOINT ["/usr/bin/entrypoint.sh"]

125
entrypoint.sh Normal file → Executable file
View File

@ -1,41 +1,110 @@
#!/bin/bash
set -eu
if [[ -z "${HOME_USER}" ]]; then
if [[ -z "${HOME_USER-}" ]]; then
HOME_USER="vscode"
fi
#addgroup nonroot
#adduser --disabled-password --gecos "" ${HOME_USER}
#echo "${HOME_USER} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
if ! grep -q "HOME_USER=" /etc/environment; then
sudo bash -c "echo HOME_USER=$HOME_USER >> /etc/environment"
fi
# We do this first to ensure sudo works below when renaming the user.
# Otherwise the current container UID may not exist in the passwd database.
eval "$(fixuid -q)"
echo "HOME_USER: ${HOME_USER}"
echo "whoami: $(whoami)"
if [ "${HOME_USER-}" ]; then
USER="$HOME_USER"
if [ "$HOME_USER" != "$(whoami)" ]; then
echo "$HOME_USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/nopasswd > /dev/null
# Unfortunately we cannot change $HOME as we cannot move any bind mounts
# nor can we bind mount $HOME into a new home as that requires a privileged container.
sudo usermod --login "$HOME_USER" vscode
sudo groupmod -n "$HOME_USER" vscode
sudo sed -i "/vscode/d" /etc/sudoers.d/nopasswd
if [[ -v VSCODE_TUNNEL_NAME && -n "${VSCODE_TUNNEL_NAME}" ]]; then
if ! grep -q "VSCODE_TUNNEL_NAME=" /etc/environment; then
sudo bash -c "echo VSCODE_TUNNEL_NAME=$VSCODE_TUNNEL_NAME >> /etc/environment"
fi
fi
# List all environment variables
printenv |
# Filter variables that start with GLOBAL_ENV_
grep -E '^GLOBAL_ENV_' |
# Exclude GLOBAL_ENV_HOME_USER and GLOBAL_ENV_VSCODE_TUNNEL_NAME
grep -vE '^(GLOBAL_ENV_HOME_USER|GLOBAL_ENV_VSCODE_TUNNEL_NAME)=' |
# Remove the GLOBAL_ENV_ prefix
sed 's/^GLOBAL_ENV_//' |
# Append the result to /etc/environment if not already present
while IFS= read -r line
do
if ! grep -q "^${line%=*}=" /etc/environment; then
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
echo "" >> /usr/bin/.bashrc
echo "export $line" >> /usr/bin/.bashrc
done
USER="$HOME_USER"
if ! id -u $HOME_USER > /dev/null 2>&1; then
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
# Creating .vscode folder if it doesn't exist
if [ ! -d "/home/${HOME_USER}/.vscode" ]; then
sudo mkdir -p /home/${HOME_USER}/.vscode
fi
# Changing the property of the directory /home/${HOME_USER}/.vscode
sudo chown -R ${HOME_USER} /home/${HOME_USER}/.vscode
fi
# Then execute entrypoint.sh
if [ "$HOME_USER" != "$(whoami)" ]; then
exec sudo -u $HOME_USER bash -c "source /etc/environment; /usr/bin/entrypoint.sh"
else
sudo chown -R ${HOME_USER} /home/${HOME_USER}
fi
# Move the .bashrc file to the user's home directory
sudo mv /usr/bin/.bashrc /home/${HOME_USER}/.bashrc
sudo chown ${HOME_USER} /home/${HOME_USER}/.bashrc
# Move the .profile file to the user's home directory
sudo mv /usr/bin/.profile /home/${HOME_USER}/.profile
sudo chown ${HOME_USER} /home/${HOME_USER}/.profile
# 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
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"
fi
done
#Creating extensions folder
sudo mkdir /home/${HOME_USER}/.config/Code
if [ ! -d "/home/${HOME_USER}/.config/Code" ]; then
sudo mkdir -p /home/${HOME_USER}/.config/Code
fi
sudo chmod -R a+rwX /home/${HOME_USER}/.config/Code
sudo mkdir /home/${HOME_USER}/.vscode-server
if [ ! -d "/home/${HOME_USER}/.vscode-server" ]; then
sudo mkdir -p /home/${HOME_USER}/.vscode-server
fi
sudo chmod -R a+rwX /home/${HOME_USER}/.vscode-server
sudo mkdir /home/${HOME_USER}/.vscode-server-insiders
if [ ! -d "/home/${HOME_USER}/.vscode-server-insiders" ]; then
sudo mkdir -p /home/${HOME_USER}/.vscode-server-insiders
fi
sudo chmod -R a+rwX /home/${HOME_USER}/.vscode-server-insiders
# Check if the data.json file exists
@ -49,7 +118,7 @@ if [ -f "/home/extensions.json" ]; then
# Loop through the extensions and process each element
for extension in $extensions; do
echo "Installing extension: $extension"
sudo su - ${HOME_USER} -c "code --install-extension $extension"
sudo su ${HOME_USER} -c "code --install-extension $extension"
done
sudo cp -R /home/${HOME_USER}/.vscode/* /home/${HOME_USER}/.vscode-server
sudo cp -R /home/${HOME_USER}/.vscode/* /home/${HOME_USER}/.vscode-server-insiders
@ -60,8 +129,8 @@ else
echo "File extensions.json not found"
fi
if [[ -z "${VSCODE_TUNNEL_NAME}" ]]; then
sudo su - ${HOME_USER} -c "code tunnel --accept-server-license-terms"
if [[ -v VSCODE_TUNNEL_NAME && -n "${VSCODE_TUNNEL_NAME}" ]]; then
sudo su ${HOME_USER} -c "code tunnel --accept-server-license-terms --name ${VSCODE_TUNNEL_NAME}"
else
sudo su - ${HOME_USER} -c "code tunnel --accept-server-license-terms --name ${VSCODE_TUNNEL_NAME}"
sudo su ${HOME_USER} -c "code tunnel --accept-server-license-terms"
fi

View File

@ -17,6 +17,28 @@ The following environment variables can be set when running the Docker container
- `HOME_USER`: The username of the user running the container. This is used to set the correct permissions on files created in the container.
- `VSCODE_TUNNEL_NAME`: The name of the SSH tunnel used by Visual Studio Code to connect to the container.
### Custom Environment Variables
You can set custom environment variables for the `HOME_USER` by using the `USER_ENV_` prefix when running the Docker container. These environment variables will be created in the `/home/${HOME_USER}/.bashrc` file without the `USER_ENV_` prefix.
For example, if you want to set a custom environment variable named `MY_VARIABLE` for the `HOME_USER`, you can do so by setting the `USER_ENV_MY_VARIABLE` environment variable when running the Docker container:
```bash
docker run -it -e HOME_USER=custom-home-user -e USER_ENV_MY_VARIABLE=my_value -e VSCODE_TUNNEL_NAME=vscode-ssh-remote-server -v /path/to/extensions.json:/home/extensions.json aleleba/vscode
```
In this example, MY_VARIABLE will be set to my_value in the /home/${HOME_USER}/.bashrc file.
### Global Environment Variables
You can set global environment variables by using the `GLOBAL_ENV_` prefix when running the Docker container. These environment variables will be created in the `/etc/environment` file without the `GLOBAL_ENV_` prefix.
For example, if you want to set a global environment variable named `MY_GLOBAL_VARIABLE`, you can do so by setting the `GLOBAL_ENV_MY_GLOBAL_VARIABLE` environment variable when running the Docker container:
```bash
docker run -it -e HOME_USER=custom-home-user -e GLOBAL_ENV_MY_GLOBAL_VARIABLE=my_global_value -e VSCODE_TUNNEL_NAME=vscode-ssh-remote-server -v /path/to/extensions.json:/home/extensions.json aleleba/vscode
```
In this example, MY_GLOBAL_VARIABLE will be set to my_global_value in the /etc/environment file.
### Adding VSCode Extensions
To add VSCode extensions to the container, create a JSON file with an array of objects containing the extension details you want to install, the only Mandatory field is uniqueIdentifier and follow this structure. For example:
@ -81,23 +103,47 @@ You can run this `docker-compose.yml` file by navigating to the directory where
This will start the container in the background and output the container ID. You can then use the `docker ps` command to view the running container.
## Using this image as a base image in a Dockerfile
## Adding Custom Scripts
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`:
In this project, you can add custom scripts that will be automatically executed when the application starts. The `/usr/bin/custom-scripts` directory in the Docker container is a volume that maps to a directory on your host machine. Here's how you can add a custom script:
### 1. Create a new script file
Create a new file with a `.sh` extension in the directory on your host machine that maps to the `/usr/bin/custom-scripts` volume in the Docker container. For example, if the `/usr/bin/custom-scripts` volume maps to the `./custom-scripts` directory on your host machine, you can create a file named `install_node.sh` in the `./custom-scripts` directory.
```bash
touch ./custom-scripts/install_node.sh
```
FROM aleleba/vscode:latest
# 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
### 2. Write your script
Open the file in a text editor and write your script. Here's an example that installs Node.js using NVM:
```bash
#!/bin/bash
# Installing Node.js with NVM
curl -O https://raw.githubusercontent.com/creationix/nvm/master/install.sh
bash install.sh
source ~/.nvm/nvm.sh
nvm install --lts
nvm alias default lts/*
nvm use default && npm install -g yo generator-code
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.
#### 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
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.
## Contributing

2
version.txt Normal file → Executable file
View File

@ -1 +1 @@
2.0.3
3.0.29