Confused on CI/CD

I am new to the CI/CD pipeline. I have been a developer for a while, but using traditional programming. Docker/Kubernetes and this CI/CD pipeline is all new to me. I am confused and all the videos and training only talks about small applications not larger scale apps.

I have a Flask app with multiple containers.
Nginx
Flask
Celery
Redis
Flower

Most of the containers are default images with Enviroment variables. The only containers that have customizations are the Flask and Celery containers. Could someone explain to me how I would write a CI/CD pipeline to only build those images without building the rest if needed? I am using docker-compose . Is this how it is supposed to work, or is there an easier approach.

---
version: "3"
services:
  flask:
    build:
      image: mrjoli021/basic_flask:1.5
    container_name: flask
    environment:
      - CONTAINER=flask
    volumes:
      - ./app/:/app
    restart: unless-stopped
    stdin_open: true
    #entrypoint: /bin/bash
    networks:
      - api

  nginx:
    image: nginx:latest
    container_name: nginx
    depends_on:
      - flask
    #entrypoint: /bin/bash
    volumes:
      - ./nginx_config:/etc/nginx/conf.d
      - ./app/:/app
    ports:
      - "443:443"
    networks:
      - api

  celery:
    build:
      context: mrjoli021/basic_flask:1.5
    container_name: celery
    environment:
      - CELERY_BROKER_URL=redis://redis:6379/0
    depends_on:
      - redis
    volumes:
      - ./app/:/app
    restart: unless-stopped
    stdin_open: true
    networks:
      - api

  redis:
    image: redis:latest
    container_name: redis
    depends_on:
      - flask
    networks:
      - api
      
# TODO set flower to go through nginx for https
  flower:
    image: mher/flower:latest
    container_name: flower
    depends_on:
      - redis
    environment:
      - CELERY_BROKER_URL=redis://redis:6379/0
      - FLOWER_PORT=5555
    ports:
      - "5555:5555"
    networks:
      - api

networks:
  api:
    driver: bridge

Hi,

Maybe if you could share what do you actually need to achieve, because your question is too broad.

Usually you build (compile) your application, test it and publish somewhere and then deploy it. docker-compose needs Docker daemon, which is often not present in CI/CD pipelines.