skip to Main Content

how can run multiple commands for. I try to run krakend and export the openapi document.

version: "3"
services:
  krakend_ce:
    image: devopsfaith/krakend:watch
    volumes:
      - ./krakend:/etc/krakend
    ports:
      - "9000:9000"
    command: ["run", "-d", "-c", "/etc/krakend/krakend.json"]
    # how to run krakend openapi export -h

i want to krakend openapi export -hafter container is started

2

Answers


  1. Judging by their Dockerfile from here, they set ENTRYPOINT ["/entrypoint.sh"] and CMD ["krakend" "run" "-c" "/etc/krakend/krakend.json"].

    What you need to do, is:

    1. Set entrypoint to /bin/bash.
    2. Create a new bash file to run multiple commands. Something like:
    #!/bin/bash
    /entrypoint.sh krakend run -c /etc/krakend/krakend.json
    # I'm not sure if it runs in foreground or background. For background you can use nohup:
    #nohup /entrypoint.sh krakend run -c /etc/krakend/krakend.json &
    /entrypoint.sh krakend openapi export -h
    
    1. Map the file into the container.
    2. Set cmd to use the new file.

    I’d build a custom Docker image for that, but setting it in docker-compose.yml is also feasible.

    version: "3"
    services:
      krakend_ce:
        image: devopsfaith/krakend:watch
        volumes:
          - ./krakend:/etc/krakend
          - ./your-custom-file.sh:/path/to/your/file.sh
        ports:
          - "9000:9000"
        entrypoint: /bin/bash
        command: /path/to/your/file.sh
    
    Login or Signup to reply.
  2. You should not use the watch tag to run multiple commands, since it monitors the config files for changes, and restart the service.

    If you use any other version (than watch), you can run an sh -c 'your commands; command2' command without problems.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search