### OAI official container registry is docker hub docker.io/oaisoftwarealliance but for this workshop we are using our ghcr.io/openairinterface registry to avoid issues with docker hub limitation
services:
    mysql:
        container_name: "mysql"
        image: ghcr.io/openairinterface/mysql:8.0
        volumes:
            - ./database/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql
            - ./healthscripts/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh
        environment:
            - TZ=Europe/Paris
            - MYSQL_DATABASE=oai_db
            - MYSQL_USER=test
            - MYSQL_PASSWORD=test
            - MYSQL_ROOT_PASSWORD=linux
        healthcheck:
            test: /bin/bash -c "/tmp/mysql-healthcheck.sh"
            interval: 10s
            timeout: 5s
            retries: 30
        networks:
            public_net:
                ipv4_address: 192.168.70.131
    ims:
        container_name: "ims"
        image: ghcr.io/openairinterface/ims:latest
        volumes:
            - ./conf/sip.conf:/etc/asterisk/sip.conf
            - ./conf/users.conf:/etc/asterisk/users.conf
        healthcheck:
            test: /bin/bash -c "pgrep asterisk"
            interval: 5s
            timeout: 2s
            retries: 10
        networks:
            public_net:
                ipv4_address: 192.168.70.139
    oai-udr:
        container_name: "oai-udr"
        image: ghcr.io/openairinterface/oai-udr:develop
        expose:
            - 80/tcp
            - 8080/tcp
        volumes:
            - ./conf/config.yaml:/openair-udr/etc/config.yaml
        environment:
            - TZ=Europe/Paris
        depends_on:
            - mysql
            - oai-nrf
        networks:
            public_net:
                ipv4_address: 192.168.70.136
    oai-udm:
        container_name: "oai-udm"
        image: ghcr.io/openairinterface/oai-udm:develop
        expose:
            - 80/tcp
            - 8080/tcp
        volumes:
            - ./conf/config.yaml:/openair-udm/etc/config.yaml
        environment:
            - TZ=Europe/Paris
        depends_on:
            - oai-udr
        networks:
            public_net:
                ipv4_address: 192.168.70.137
    oai-ausf:
        container_name: "oai-ausf"
        image: ghcr.io/openairinterface/oai-ausf:develop
        expose:
            - 80/tcp
            - 8080/tcp
        volumes:
            - ./conf/config.yaml:/openair-ausf/etc/config.yaml
        environment:
            - TZ=Europe/Paris
        depends_on:
            - oai-udm
        networks:
            public_net:
                ipv4_address: 192.168.70.138
    oai-nrf:
        container_name: "oai-nrf"
        image: ghcr.io/openairinterface/oai-nrf:develop
        expose:
            - 80/tcp
            - 8080/tcp
        volumes:
            - ./conf/config.yaml:/openair-nrf/etc/config.yaml
        environment:
            - TZ=Europe/Paris
        networks:
            public_net:
                ipv4_address: 192.168.70.130
    oai-amf:
        container_name: "oai-amf"
        image: ghcr.io/openairinterface/oai-amf:develop
        expose:
            - 80/tcp
            - 8080/tcp
            - 38412/sctp
        volumes:
            - ./conf/config.yaml:/openair-amf/etc/config.yaml
        environment:
            - TZ=Europe/Paris
        depends_on:
            - mysql
            - oai-nrf
            - oai-ausf
        networks:
            public_net:
                ipv4_address: 192.168.70.132
    oai-smf:
        container_name: "oai-smf"
        image: ghcr.io/openairinterface/oai-smf:develop
        expose:
            - 80/tcp
            - 8080/tcp
            - 8805/udp
        volumes:
            - ./conf/config.yaml:/openair-smf/etc/config.yaml
        environment:
            - TZ=Europe/Paris
        depends_on:
            - oai-nrf
            - oai-amf
        networks:
            public_net:
                ipv4_address: 192.168.70.133
    oai-upf:
        container_name: "oai-upf"
        image: ghcr.io/openairinterface/oai-upf:develop
        expose:
            - 80/tcp
            - 2152/udp
            - 8805/udp
        volumes:
            - ./conf/config.yaml:/openair-upf/etc/config.yaml
        environment:
            - TZ=Europe/Paris
        depends_on:
            - oai-nrf
            - oai-smf
        cap_add:
            - NET_ADMIN
            - SYS_ADMIN
        cap_drop:
            - ALL
        privileged: true
        networks:
            public_net:
                ipv4_address: 192.168.70.134
    oai-traffic-server:
        privileged: true
        init: true
        container_name: oai-ext-dn
        image: ghcr.io/openairinterface/trf-gen-cn5g:latest
        environment:
            - UPF_FQDN=oai-upf
            - UE_NETWORK=12.1.1.0/24
            - USE_FQDN=yes
        healthcheck:
            test: /bin/bash -c "ip r | grep 12.1.1"
            interval: 10s
            timeout: 5s
            retries: 5
        networks:
            public_net:
                ipv4_address: 192.168.70.135
networks:
    public_net:
        driver: bridge
        name: oaiworkshop
        ipam:
            config:
                - subnet: 192.168.70.128/26
        driver_opts:
            com.docker.network.bridge.name: "oaiworkshop"
