user3529850
user3529850

Reputation: 986

docker-compose run multiple commands for a service

I am using docker on windows - version 18.03 (client)/18.05 (server). I have created docker-compose file for ELK stack. Everything is working fine. What I would like to do is, to install logtrail before kibana is started. I was thinking about copying logtrail*.zip first, then call install:

container_name: kibana
(...)
command:
  - docker cp kibana:/ ./kibana/logtrail/logtrail-6.7.1-0.1.31.zip
  - /bin/bash
  - ./bin/kibana-plugin install/logtrail-6.7.1-0.1.31.zip

But that doesn't look like right way as first of all it doesn't work, second of all I am not sure if I can call mutliple commands like I did and third of all I'm not sure if docker cp in command is even allowed on that stage of service creation

Upvotes: 11

Views: 29449

Answers (4)

GtdDev
GtdDev

Reputation: 938

THATS MY SOLUTION FOR THIS CASE:

#    OPTION 01:
#    command: >
#      bash -c "chmod +x /scripts/rs-init.sh
#      && sh /scripts/rs-init.sh"
#    OPTION 02:
#    entrypoint: [ "bash", "-c", "chmod +x /scripts/rs-init.sh && sh /scripts/rs-init.sh"]

Upvotes: 1

Ranjan MP
Ranjan MP

Reputation: 381

You can run multiple commands for a service in docker compose by:

command: sh -c "command1 && command2 && command2"

Upvotes: 6

Görkem Mülayim
Görkem Mülayim

Reputation: 1209

command:
- /bin/bash
- -c
- |
  echo "This is a multiline command"
  echo "See how I escape $$ sign"
  echo $$PATH

You can run multiple commands like above however you can not run docker cp as in your command.

Upvotes: 13

loyalBrown
loyalBrown

Reputation: 1526

If you're looking to install software David Maze's comment seems to be the standard path. If you want to actually run multiple commands look at the answer to this SO question Using Docker-Compose, how to execute multiple commands

Upvotes: -1

Related Questions