Skip to content

fix: docker

fix: docker #78

Workflow file for this run

name: Dev CI/CI Pipeline
on:
push:
branches:
- dev
jobs:
build-and-deploy:
runs-on: ubuntu-22.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'zulu'
- name: Save SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.EC2_DEV_SSH_KEY }}" > /tmp/ssh_key.pem
chmod 600 /tmp/ssh_key.pem
ssh-keyscan -H ${{ secrets.EC2_DEV_HOST }} >> ~/.ssh/known_hosts
- name: Set up SSH Tunnel for RDS
run: ssh -i /tmp/ssh_key.pem -f -N -L 13306:${{ secrets.RDS_DEV_HOST }} ${{ secrets.EC2_DEV_USER }}@${{ secrets.EC2_DEV_HOST }}
- name: Set up SSH Tunnel for Redis
run: ssh -i /tmp/ssh_key.pem -f -N -L ${{ secrets.REDIS_PORT_DEV }}:${{ secrets.REDIS_HOST_DEV }}:${{ secrets.REDIS_PORT_DEV }} ${{ secrets.EC2_DEV_USER }}@${{ secrets.EC2_DEV_HOST }}
- name: Build with Gradle
run: ./gradlew clean build
env:
DB_URL: ${{ secrets.DB_URL_LOCAL }}
DB_USERNAME: ${{ secrets.DB_USERNAME_DEV }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD_DEV }}
AWS_SES_ACCESS_KEY: ${{ secrets.AWS_SES_ACCESS_KEY }}
AWS_SES_SECRET_ACCESS_KEY: ${{ secrets.AWS_SES_SECRET_ACCESS_KEY }}
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
REDIS_HOST: ${{ secrets.REDIS_HOST_DEV }}
REDIS_PORT: ${{ secrets.REDIS_PORT_DEV }}
- name: Remove SSH KEY
run: rm /tmp/ssh_key.pem
- name: Deploy Docker files to EC2
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.EC2_DEV_HOST }}
username: ${{ secrets.EC2_DEV_USER }}
key: ${{ secrets.EC2_DEV_SSH_KEY }}
port: 22
source: "Dockerfile,docker-compose.yml,prometheus.yml,build/libs/circle-on-0.0.1-SNAPSHOT.jar"
target: "~/circle-on"
- name: Run Docker Compose on EC2
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.EC2_DEV_HOST }}
username: ${{ secrets.EC2_DEV_USER }}
key: ${{ secrets.EC2_DEV_SSH_KEY }}
port: 22
script: |
mkdir -p ~/circle-on
cd ~/circle-on
export DB_URL=${{ secrets.DB_URL_DEV }}
export DB_USERNAME=${{ secrets.DB_USERNAME_DEV }}
export DB_PASSWORD=${{ secrets.DB_PASSWORD_DEV }}
export AWS_SES_ACCESS_KEY=${{ secrets.AWS_SES_ACCESS_KEY }}
export AWS_SES_SECRET_ACCESS_KEY=${{ secrets.AWS_SES_SECRET_ACCESS_KEY }}
export JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }}
export IMAGE_STORAGE_PATH=${{ secrets.IMAGE_STORAGE_PATH }}
export REDIS_HOST=${{ secrets.REDIS_HOST_DEV }}
export REDIS_PORT=${{ secrets.REDIS_PORT_DEV }}
export LOG_STORAGE_PATH=${{ secrets.LOG_STORAGE_PATH }}
export LOG_PATH=${{ secrets.LOG_PATH }}
export PROMETHEUS_PATH=${{ secrets.PROMETHEUS_PATH }}
export GRAFANA_PASSWORD=${{ secrets.GRAFANA_PASSWORD }}
export JAVA_OPTS=-Xms800m -Xmx1.6g -XX:+UseG1GC -XX:InitiatingHeapOccupancyPercent=60 -XX:+UseContainerSupport
docker compose down
docker compose up --build -d