I have the first project with docker compose file:
version: '3'
services:
...other services...
localstack:
container_name: localstack
image: localstack/localstack:2.3
hostname: localstack
env_file:
- /.env
ports:
- "4566:4566"
- 8080:8080
environment:
- SERVICES=s3,ses
- DEBUG=${DEBUG- }
- DOCKER_HOST=unix:///var/run/docker.sock
- HOSTNAME=localstack
networks:
- ntwk1
volumes:
- localstack-data:/tmp/localstack
- "/var/run/docker.sock:/var/run/docker.sock"
- ./localstack-script.sh:/etc/localstack/init/ready.d/script.sh
volumes:
localstack-data:
networks:
ntwk1:
external: true
Here localstack-script.sh works correctly and everything is okay. But if I do it in other docker-compose file it fails. My localstack-srcipt.sh:
#!/bin/bash
awslocal s3api \
create-bucket --bucket $S3_BUCKET_NAME \
--create-bucket-configuration LocationConstraint=eu-central-1 \
--region eu-central-1
Then I created another project with another docker-compose file:
version: '3'
services:
... other services...
localstack_1:
container_name: localstack_1
image: localstack/localstack:2.3
hostname: localstack_1
env_file:
- .env
ports:
- "4567:4566"
- 8081:8080
environment:
- SERVICES=s3
- DEBUG=${DEBUG- }
- DOCKER_HOST=unix:///var/run/docker.sock
- HOSTNAME=localstack_1
networks:
- ntwk
volumes:
- localstack1:/tmp/localstack
- "/var/run/docker.sock:/var/run/docker.sock"
- ./localstack-script.sh:/etc/localstack/init/ready.d/script.sh
volumes:
localstack1:
networks:
ntwk:
external: true
And it gives error:
ERROR --- [ MainThread] localstack.runtime.init : Error while running script Script(path='/etc/localstack/init/ready.d/script.sh', stage=READY, state=ERROR): [Errno 13] Permission denied: '/etc/localstack/init/ready.d/script.sh'
In the dockerfile I give permissions to .sh files using RUN chmod +x
Since you are mounting your script as volume, the script has to be executable. Check permissions on your script
localstack-script.sh
and if the script is not executable give it the permission. [chmod +x
]