2

I have a docker-compose.yml

php-fpm:
    build: ./php
    container_name: php-fpm-symfony
    links:
        - db
    ports:
        - 9000:9000
        - 8000:8000
    working_dir: /var/www/html/
    volumes:
        - ../:/var/www/html
    volumes_from:
        - data
    tty: true
    env_file:
        - ./docker.env
    entrypoint: /entrypoint.sh

When I'm executing my docker-compose up -d I would like to pass an argument, which is my container name, to name dynamically my container.

Is it possible with docker-compose?

Like for example:

docker-compose up -d "-variable=symfony" // ???

And:

php-fpm:
    build: ./php
    container_name: php-fpm-$(variable)

Something which works like that...

  • Can't you just use normal environment variables? docs.docker.com/compose/environment-variables – Stephen Harris Aug 22 '16 at 17:57
  • @StephenHarris But I don't necessarily want my variable to be in my container. I just want to build different container name regarding the argument. – Kevin Aug 22 '16 at 18:04
  • Can't you do container_name: php-fpm-${FOOBAR} and then FOOBAR=symfony docker-compose ... ? – Stephen Harris Aug 22 '16 at 18:06
  • Apparently not. I have this message WARNING: The FOOBAR variable is not set. Defaulting to a blank string. – Kevin Aug 22 '16 at 18:16
  • Did you type it on one line, 'cos it worked for me. % grep FOO docker-compose.yml container_name: foo-${FOOBAR} % FOOBAR=hellotest docker-compose up Recreating foo- Attaching to foo-hellotest foo-hellotest | Hello, World foo-hellotest exited with code 0 . We can see the 'hellotest' coming from the environment. – Stephen Harris Aug 22 '16 at 18:42
1

You can define all of your possible choices in YAML and use YAML references to keep the verbosity down.

default-container: &default-container
    build: ./php
    container_name: default
    links:
        - db
    ports:
        - 9000:9000
        - 8000:8000
    working_dir: /var/www/html/
    volumes:
        - ../:/var/www/html
    volumes_from:
        - data
    tty: true
    env_file:
        - ./docker.env
    entrypoint: /entrypoint.sh

php-fpm-symfony:
    <<: *default-container
    container_name: php-fpm-symfony

php-fpm-laravel:
    <<: *default-container
    container_name: php-fpm-laravel

References:

https://en.wikipedia.org/wiki/YAML#References

https://stackoverflow.com/questions/4150782/using-yaml-with-variables

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.