rerun new group membership #14
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build-Publish-Deploy Docker container | |
on: | |
push: | |
branches: | |
- main | |
# workflow_run: | |
# workflows: ["Python package"] | |
# types: | |
# - completed | |
env: | |
DOCKERHUB_REPO: cicd | |
DOCKERHUB_TAG: app_streamlit | |
jobs: | |
build-and-push-docker-image: | |
name: Build Docker image and push to repositories | |
runs-on: ubuntu-latest | |
steps: | |
# Part 1: Rebuilding the container image on DockerHub | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Install Docker Compose | |
run: | | |
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r .tag_name)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose | |
sudo chmod +x /usr/local/bin/docker-compose | |
docker-compose --version | |
- name: Login to DockerHub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Build and push | |
run: | | |
docker-compose build | |
docker tag ${{ env.DOCKERHUB_TAG }}:latest ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.DOCKERHUB_REPO }}:latest | |
docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.DOCKERHUB_REPO }}:latest | |
# Part 2: Deploying the container image to the EC2 instance | |
- name: Set up SSH | |
run: | | |
echo "${{ secrets.AWS_EC2_KEY }}" > ec2-key.pem | |
chmod 400 "ec2-key.pem" | |
- name: Deploy to EC2 | |
run: | | |
ssh -o StrictHostKeyChecking=no -i ec2-key.pem -t ${{ secrets.AWS_EC2_USERNAME }}@${{ secrets.AWS_EC2_HOST }} << 'EOF' | |
# Install Docker if not already installed | |
if ! command -v docker &> /dev/null | |
then | |
sudo apt-get update | |
sudo apt-get install -y docker.io | |
sudo systemctl start docker | |
sudo systemctl enable docker | |
fi | |
# Add the user to the docker group | |
sudo usermod -aG docker $USER | |
# Apply the new group membership and run Docker commands in a subshell | |
sudo su - $USER -c " | |
# Log in to Docker | |
echo "${{ secrets.DOCKERHUB_TOKEN }}" | sudo docker login --username "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin | |
# Verify Docker login | |
docker info | |
# Free up disk space | |
docker system prune -a -f | |
# Pull the Docker image and run the container | |
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.DOCKERHUB_REPO }}:latest | |
docker stop ${{ env.DOCKERHUB_REPO }}-container || true | |
docker rm ${{ env.DOCKERHUB_REPO }}-container || true | |
docker run --name ${{ env.DOCKERHUB_REPO }}-container -d -p 8501:8501 ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.DOCKERHUB_REPO }}:latest | |
" | |
EOF |