简体   繁体   中英

Gitlab CI runner fails at docker-compose build with profiles

My idea is to have a single docker-compose file that I can configure with --profile db_as_container flag depending on whether I want to have cloud database (MongoDB atlas) or local database-as-container.

Here's my docker-compose.yml:

version: '3'

services:
    app:
        image: '${APP_NAME}:${TAG:-latest}'
        build: .
        ports:
            - '${PORT}:${PORT}'

    mongo_db:
        image: mongo
        container_name: mongo_db_container
        ports:
            - "27017:27017"
        profiles:
            - db_as_container

My docker compose up shell script ( dc-up.sh ) deduces whether my DB_CONNECTION_STRING is cloud type or local container type and calls appropriate up command.

TAG=${TAG} docker-compose --profile db_as_container up -d --build

vs.

TAG=${TAG} docker-compose up -d --build

And this works locally and does not complain about using profiles.

Problem is when my Gitlab CI runner runs my build script ( build-and-push.sh ):

TAG=${TAG} docker-compose build

It produces this error:

The Compose file './docker-compose.yml' is invalid because: Unsupported config option for services.mongo_db: 'profiles'

What am I doing wrong here?

Actually the issue was not the version of the compose file specification, but rather docker-compose itself as i've found out here

Support for service profiles was added in docker-compose version 1.28

Updating from 1.262 to 1.28.6 solved my issue.

Only Docker Compose v3 has profiles option. I'm guessing your CI compose version is a lower one.

You will need to upgrade it to version 3.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM