diff --git a/Dockers/remote-node-container/entrypoint.sh b/Dockers/remote-node-container/entrypoint.sh index 2e9cf29..d7320e4 100644 --- a/Dockers/remote-node-container/entrypoint.sh +++ b/Dockers/remote-node-container/entrypoint.sh @@ -1,5 +1,7 @@ #!/bin/bash set -e + +# Function to extract domain from Git SSH URL extract_domain() { local url=$1 @@ -19,18 +21,17 @@ if [ -z "$REPO_URL" ]; then exit 1 fi -# Check if the SSH key exists if [ ! -f /root/.ssh/id_rsa ]; then echo "Error: SSH private key not found at /root/.ssh/id_rsa" exit 1 fi -if [ -z $GIT_USER ]; then +if [ -z "$GIT_USER" ]; then echo "Error: GIT_USER environment variable must be set." exit 1 fi -if [ -z $GIT_EMAIL ]; then +if [ -z "$GIT_EMAIL" ]; then echo "Error: GIT_EMAIL environment variable must be set." exit 1 fi @@ -44,22 +45,23 @@ fi if [ -n "$TELEPORT_VERSION" ] && [ -n "$TELEPORT_URL" ]; then echo "Installing Teleport version $TELEPORT_VERSION, edition $TELEPORT_EDITION..." echo "Executing: curl https://goteleport.com/static/install.sh | bash -s $TELEPORT_VERSION $TELEPORT_EDITION" - curl https://goteleport.com/static/install.sh | bash -s ${TELEPORT_VERSION} ${TELEPORT_EDITION} + curl https://goteleport.com/static/install.sh | bash -s "${TELEPORT_VERSION}" "${TELEPORT_EDITION}" - ## If teleport token is set and there is no teleport.yaml file, create one + # If teleport token is set and there is no teleport.yaml file, create one if [ -n "$TELEPORT_TOKEN" ] && [ ! -f /etc/teleport.yaml ]; then - teleport configure --roles=node --token=$TELEPORT_TOKEN --proxy=$TELEPORT_URL --no-acme -o file + teleport configure --roles=node --token="$TELEPORT_TOKEN" --proxy="$TELEPORT_URL" --no-acme -o file echo "Created teleport configuration file" fi else - echo "Error: TELEPORT_VERSION and TELEPORT_EDITION environment variables must be set." + echo "Error: TELEPORT_VERSION and TELEPORT_URL environment variables must be set." + exit 1 fi # Ensure the SSH key has the correct permissions chmod 600 /root/.ssh/id_rsa # Extract the domain from the REPO_URL -DOMAIN=extract_domain "$REPO_URL" +DOMAIN=$(extract_domain "$REPO_URL") # Check if the repository directory already exists if [ ! -d "/workspace/.git" ]; then @@ -69,8 +71,9 @@ if [ ! -d "/workspace/.git" ]; then IdentityFile /root/.ssh/id_rsa StrictHostKeyChecking no " >>/root/.ssh/config + # Clone the repository if it doesn't exist - git clone $REPO_URL /workspace + git clone "$REPO_URL" /workspace fi # Add the public SSH key to authorized_keys @@ -89,12 +92,12 @@ if [ -f /environment/.env ]; then mkdir -p /workspace/environments cp /environment/.env /workspace/.env else - echo "Error: Environment file not found at /environment/.dev.env" - exit 1 + echo "Error: Environment file not found at /environment/.env" fi + # Set the git user and email -git config --global user.name $GIT_USER -git config --global user.email $GIT_EMAIL +git config --global user.name "$GIT_USER" +git config --global user.email "$GIT_EMAIL" # Get the hostname of the machine HOSTNAME=$(hostname) @@ -105,6 +108,8 @@ CONFIG_FILE="/etc/teleport.yaml" # Edit the teleport.yaml file to update the nodename sed -i "s/^ nodename:.*/ nodename: $HOSTNAME/" "$CONFIG_FILE" +# Start Teleport in the background nohup teleport start & + # Start the application with pm2 exec pm2-runtime "npm run dev" diff --git a/Dockers/remote-react-container/entrypoint.sh b/Dockers/remote-react-container/entrypoint.sh index ffe88dc..e945447 100644 --- a/Dockers/remote-react-container/entrypoint.sh +++ b/Dockers/remote-react-container/entrypoint.sh @@ -1,6 +1,7 @@ #!/bin/bash set -e +# Function to extract domain from Git SSH URL extract_domain() { local url=$1 @@ -40,7 +41,7 @@ fi chmod 600 /root/.ssh/id_rsa # Extract the domain from the REPO_URL -DOMAIN=extract_domain "$REPO_URL" +DOMAIN=$(extract_domain "$REPO_URL") # Check if the repository directory already exists if [ ! -d "/workspace/.git" ]; then @@ -50,8 +51,9 @@ if [ ! -d "/workspace/.git" ]; then IdentityFile /root/.ssh/id_rsa StrictHostKeyChecking no " >>/root/.ssh/config + # Clone the repository if it doesn't exist - git clone $REPO_URL /workspace + git clone "$REPO_URL" /workspace fi # Add the public SSH key to authorized_keys @@ -67,10 +69,11 @@ fi # Install Teleport if the environment variables are set if [ -n "$TELEPORT_VERSION" ] && [ -n "$TELEPORT_URL" ]; then echo "Installing Teleport version $TELEPORT_VERSION, edition $TELEPORT_EDITION..." - echo "Executing: curl https://goteleport.com/static/install.sh | bash -s $TELEPORT_VERSION $TELEPORT_EDITION" - curl https://goteleport.com/static/install.sh | bash -s ${TELEPORT_VERSION} ${TELEPORT_EDITION} + echo "Executing: curl https://goteleport.com/static/install.sh | bash -s ${TELEPORT_VERSION} ${TELEPORT_EDITION}" + curl https://goteleport.com/static/install.sh | bash -s "${TELEPORT_VERSION}" "${TELEPORT_EDITION}" else - echo "Error: TELEPORT_VERSION and TELEPORT_EDITION environment variables must be set." + echo "Error: TELEPORT_VERSION and TELEPORT_URL environment variables must be set." + exit 1 fi # Change to the repository directory @@ -86,16 +89,17 @@ if [ -f /environment/.dev.env ]; then else echo "Environment file not found at /environment/.dev.env" fi + # Set the git user and email -git config --global user.name $GIT_USER -git config --global user.email $GIT_EMAIL +git config --global user.name "$GIT_USER" +git config --global user.email "$GIT_EMAIL" # Get the hostname of the machine HOSTNAME=$(hostname) -## If teleport token is set and there is no teleport.yaml file, create one +# If teleport token is set and there is no teleport.yaml file, create one if [ -n "$TELEPORT_TOKEN" ] && [ ! -f /etc/teleport.yaml ]; then - teleport configure --roles=node --token=$TELEPORT_TOKEN --proxy=$TELEPORT_URL --no-acme -o file + teleport configure --roles=node --token="$TELEPORT_TOKEN" --proxy="$TELEPORT_URL" --no-acme -o file echo "Created teleport configuration file" fi @@ -105,6 +109,8 @@ CONFIG_FILE="/etc/teleport.yaml" # Edit the teleport.yaml file to update the nodename sed -i "s/^ nodename:.*/ nodename: $HOSTNAME/" "$CONFIG_FILE" +# Start Teleport in the background nohup teleport start & + # Start the application with pm2 exec pm2-runtime "yarn start:dev"