Compare commits

..

51 Commits

Author SHA1 Message Date
40c5f1c963
Adding validation to use chmod +x $script when running custom script.
Some checks failed
Build and Push Docker Image ARM64 / docker (push) Failing after 1m52s
2025-06-04 22:01:36 +00:00
e34b39c827
Updating version of vscode.
Some checks failed
Build and Push Docker Image ARM64 / docker (push) Failing after 2m11s
2025-06-04 06:06:29 +00:00
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
5 changed files with 150 additions and 39 deletions

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

View File

@ -1,8 +1,7 @@
FROM ubuntu:22.04
# Update the package list, install sudo, create a non-root user, and grant password-less sudo permissions
RUN apt update
RUN apt install -y sudo
RUN apt update && apt install -y sudo
RUN sudo apt-get update
#Instalando Curl
@ -13,10 +12,10 @@ RUN sudo apt-get install -y wget
RUN sudo apt-get install -y jq
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)" \
&& 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 \
&& chmod 4755 /usr/local/bin/fixuid \
&& mkdir -p /etc/fixuid \
@ -29,14 +28,16 @@ RUN ARCH="$(dpkg --print-architecture)" \
RUN curl -sL https://aka.ms/DevTunnelCliInstall | bash
#Instalando VSCode
RUN sudo apt-get update && sudo apt-get install -y gnupg2
RUN sudo apt-get install -y software-properties-common
RUN sudo wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
RUN sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
RUN sudo apt update
RUN sudo apt install code -y
RUN ARCH="$(dpkg --print-architecture)" \
&& sudo apt-get update \
&& sudo apt-get install -y gnupg2 \
&& sudo apt-get install -y software-properties-common \
&& sudo wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add - \
&& 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 sysctl -w fs.inotify.max_user_watches=524288

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,21 +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
# 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 /usr/bin/.bashrc
while IFS= read -r line
do
echo "export $line" | sudo -u ${HOME_USER} tee -a /usr/bin/.bashrc
done
# Creating .vscode folder if it doesn't exist
if [ ! -d "/home/${HOME_USER}/.vscode" ]; then
sudo mkdir -p /home/${HOME_USER}/.vscode
@ -69,21 +77,53 @@ 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}
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
# 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
sudo -u $HOME_USER bash -c "source /etc/environment; $script"
# Ensure the script is executable
if [ ! -x $script ]; then
sudo chmod +x $script
fi
# Execute the script as the configured user
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

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,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.
#### 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.
> **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
If you'd like to contribute to this project, please fork the repository and create a pull request.

View File

@ -1 +1 @@
3.0.21
3.2.9