When i deploy and run my docker-compose a new image gets pulled every time from the github docker registry, I thought of having the main
tag appended to my container image that the same image will always be pulled, but every time I build a new docker image in my docker registry, it pulls a new image and takes space in my vps. How can I handle this?
Here’s my deployment.yml
name: Deploy prod stack to DigitalOcean
on:
create:
branches:
- release
push:
branches:
- release
pull_request:
branches:
- release
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checking out the repository
uses: actions/checkout@v3
- name: Copy docker-compose.prod.yml over to the server
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
source: "docker-compose.prod.yml"
target: /home/${{ secrets.USERNAME }}
- name: Run the docker-compose.prod.yml stack
uses: appleboy/[email protected]
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
script: |
echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
export DATABASE_HOST=${{ secrets.DATABASE_HOST }}
export DATABASE_PORT=${{ secrets.DATABASE_PORT }}
export DATABASE_NAME=${{ secrets.DATABASE_NAME }}
export DATABASE_USERNAME=${{ secrets.DATABASE_USERNAME }}
export DATABASE_PASSWORD=${{ secrets.DATABASE_PASSWORD }}
export APP_KEYS=${{ secrets.APP_KEYS }}
export API_TOKEN_SALT=${{ secrets.API_TOKEN_SALT }}
export ADMIN_JWT_SECRET=${{ secrets.ADMIN_JWT_SECRET }}
export JWT_SECRET=${{ secrets.JWT_SECRET }}
export R2_ACCESS_KEY_ID=${{ secrets.R2_ACCESS_KEY_ID }}
export R2_ACCESS_SECRET=${{ secrets.R2_ACCESS_SECRET }}
export R2_ENDPOINT=${{ secrets.R2_ENDPOINT }}
export R2_BUCKET=${{ secrets.R2_BUCKET }}
export R2_PUBLIC_ACCESS_URL=${{ secrets.R2_PUBLIC_ACCESS_URL }}
export APP_URL=${{ secrets.APP_URL }}
docker compose -f docker-compose.prod.yml down
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
And here’s my docker-compose.prod.yml
services:
strapi:
build: .
image: "ghcr.io/adfff/admin-cms:main"
restart: on-failure
ports:
- "1337:1337"
environment:
DATABASE_HOST: ${DATABASE_HOST}
DATABASE_PORT: ${DATABASE_PORT}
DATABASE_NAME: ${DATABASE_NAME}
DATABASE_USERNAME: ${DATABASE_USERNAME}
DATABASE_PASSWORD: ${DATABASE_PASSWORD}
JWT_SECRET: ${JWT_SECRET}
ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET}
APP_KEYS: ${APP_KEYS}
API_TOKEN_SALT: ${API_TOKEN_SALT}
R2_ACCESS_KEY_ID: ${R2_ACCESS_KEY_ID}
R2_ACCESS_SECRET: ${R2_ACCESS_SECRET}
R2_BUCKET: ${R2_BUCKET}
R2_ENDPOINT: ${R2_ENDPOINT}
R2_PUBLIC_ACCESS_URL: ${R2_PUBLIC_ACCESS_URL}
APP_URL: ${APP_URL}
volumes:
- strapi-uploads:/opt/app/public/uploads
- ~/docker-configs:/var/lib/config
networks:
- backend-network
rabbitmq:
image: rabbitmq:3.13-management
ports:
- "5672:5672" # RabbitMQ default port
- "15672:15672" # RabbitMQ management UI
environment:
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASSWORD}
volumes:
- rabbitmq_data:/var/lib/rabbitmq
networks:
- backend-network
networks:
backend-network:
name: backend-network
driver: bridge
volumes:
strapi-uploads:
config-files:
rabbitmq_data:
Can someone help me figure out how to get the latest image only and don’t take space in my vps