Skip to content

Commit

Permalink
Merge pull request #6 from KristienN/fix-deploy
Browse files Browse the repository at this point in the history
feat: Fix Deploy step and use docker-compose instead of docker
  • Loading branch information
KristienN authored Dec 5, 2024
2 parents b9e5907 + 692795e commit f03e90d
Show file tree
Hide file tree
Showing 7 changed files with 63 additions and 16 deletions.
9 changes: 2 additions & 7 deletions .github/workflows/main-ci.yml → .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
PRIVATE_KEY: ${{ secrets.TF_SSH_PRIVATE_KEY }}
run: |
echo "$PRIVATE_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh/id_rsa
- name: "Set up Terraform"
uses: hashicorp/setup-terraform@v3
Expand All @@ -29,9 +29,4 @@ jobs:
terraform plan -var digitalocean_access_token=$DIGITALOCEAN_ACCESS_TOKEN -out=tfplan
terraform apply tfplan -var digitalocean_access_token=$DIGITALOCEAN_ACCESS_TOKEN -auto-approve
env:
DIGITALOCEAN_ACCESS_TOKEN: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
- name: "Post-deployment testing"
run: |
terraform output -raw droplet_ip > droplet_ip.txt
DROPLET_IP=$(cat droplet_ip.txt)
curl -I http://DROPLET_IP
DIGITALOCEAN_ACCESS_TOKEN: ${{ secrets.DIGITALOCEAN_ACCESS_TOKEN }}
File renamed without changes.
26 changes: 26 additions & 0 deletions cluster-config/docker-compose.prod.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
services:

app:
container_name: portfolio-1
image: "registry.digitalocean.com/kristien-docr/portfolio-v2:latest"
ports:
- "8001:80"
restart: on-failure

replica-app:
container_name: portfolio-2
image: "registry.digitalocean.com/kristien-docr/portfolio-v2:latest"
ports:
- "8002:80"
restart: on-failure

ngx-reverse-proxy-lb:
container_name: ngx-reverse-proxy-lb
image: "registry.digitalocean.com/kristien-docr/portfolio-v2-nlb-proxy:latest"
ports:
- "80:80"
- "443:443"
depends_on:
- app
- replica-app
restart: on-failure
12 changes: 12 additions & 0 deletions main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,18 @@ resource "digitalocean_droplet" "portfolio-v2-server" {
ssh_keys = [var.ssh_fingerprint]
tags = ["portfolio-v2", "server"]

provisioner "file" {
source = "./cluster-config/docker-compose.prod.yaml"
destination = "/var/local/docker-compose.prod.yaml"

connection {
type = "ssh"
user = "root"
private_key = file("~/.ssh/id_rsa")
host = self.ipv4_address
}
}

provisioner "file" {
source = "./scripts/install.sh"
destination = "/tmp/install.sh"
Expand Down
30 changes: 22 additions & 8 deletions scripts/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,33 @@ fi

echo "Updating package list and installing dependencies..."
sudo apt-get update -y || { echo "Failed to update package list"; exit 1; }
sudo apt install apt-transport-https ca-certificates curl -y
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

echo "Installing Docker..."
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update -y


sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker-compose --version

echo "Installing DigitalOcean CLI..."
sudo snap install doctl
sudo snap connect doctl:dot-docker
sudo mkdir /root/.config
sudo mkdir -p /root/.config

echo "Logging into Digital Ocean Services"
echo "Logging into DigitalOcean Services..."
sudo doctl auth init --access-token $DOCTL_ACCESS_TOKEN
sudo doctl registry login

echo "Pulling latest image"
sudo docker pull registry.digitalocean.com/kristien-docr/portfolio-v2:local || { echo "Failed to pull image"; exit 1; }
sudo docker run --name portfolio-v2 -d -p 80:80 registry.digitalocean.com/kristien-docr/portfolio-v2:local
echo "Running docker-compose command..."

sudo apt install docker-compose
sudo docker-compose -f /var/local/docker-compose.prod.yaml up --build -d
Binary file modified tfplan
Binary file not shown.
2 changes: 1 addition & 1 deletion variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@ variable "ssh_fingerprint" {
variable "digitalocean_access_token" {
description = "DigitalOcean API Token"
type = string
sensitive = true
sensitive = false
}

0 comments on commit f03e90d

Please sign in to comment.