I have a docker-compose.yaml
file that looks like this:
version: '3'
services:
keycloak:
image: quay.io/keycloak/keycloak:19.0.0
command: "start-dev"
ports:
- 8443:8443
healthcheck:
test: "curl -f http://0.0.0.0:8443"
interval: 5s
timeout: 5s
retries: 20
start_period: 10s
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: password123
KC_HTTP_PORT: 8443
keycloak-setup:
image: quay.io/keycloak/keycloak:19.0.0
entrypoint: "/bin/bash"
command: -c "kcadm.sh config credentials --server http://keycloak:8443 --realm master --user admin --password password123 && kcadm.sh create realms -s realm=myrealm -s enabled=true -o"
depends_on:
keycloak:
condition: service_healthy
environment:
PATH: /opt/keycloak/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
It works OK, but the keycloak-setup
command
is getting very long.
I would like to break it up a bit like this:
keycloak-setup:
image: quay.io/keycloak/keycloak:19.0.0
entrypoint: [ /bin/bash, -c ]
command: |
kcadm.sh config credentials --server http://keycloak:8443 --realm master --user admin --password password123
&& kcadm.sh create realms -s realm=myrealm -s enabled=true -o
depends_on:
keycloak:
condition: service_healthy
environment:
PATH: /opt/keycloak/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
However, this does not work.
How can I set my entrypoint to /bin/bash
and execute a multi-line script in Docker Compose?