Compare commits

...

15 Commits

Author SHA1 Message Date
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
3 changed files with 85 additions and 37 deletions

View File

@ -16,7 +16,7 @@ if [[ -v VSCODE_TUNNEL_NAME && -n "${VSCODE_TUNNEL_NAME}" ]]; then
fi
# List all environment variables
sudo env |
printenv |
# Filter variables that start with GLOBAL_ENV_
grep -E '^GLOBAL_ENV_' |
@ -31,7 +31,30 @@ sed 's/^GLOBAL_ENV_//' |
while IFS= read -r line
do
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
done
@ -40,29 +63,6 @@ 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
# 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
if [ ! -d "/home/${HOME_USER}/.vscode" ]; then
sudo mkdir -p /home/${HOME_USER}/.vscode
@ -76,23 +76,36 @@ fi
if [ "$HOME_USER" != "$(whoami)" ]; then
exec sudo -u $HOME_USER bash -c "source /etc/environment; /usr/bin/entrypoint.sh"
else
sudo chown -R 1000 /home/${HOME_USER}
sudo chown -R ${HOME_USER} /home/${HOME_USER}
chmod -R 600 /home/${HOME_USER}/.ssh
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
# 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
# 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
#Creating extensions folder
if [ ! -d "/home/${HOME_USER}/.config/Code" ]; then
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
#!/bin/bash
# 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
source ~/.nvm/nvm.sh
nvm install --lts
@ -132,11 +132,46 @@ 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.
## 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.
## Contributing
If you'd like to contribute to this project, please fork the repository and create a pull request.

View File

@ -1 +1 @@
3.0.20
3.0.35