I ran into a non-intuitive error while mucking around with docker-compose recently on an example.
docker-compose up
Building some_server
Step 1 : FROM alpine
---> 13e1761bf172
Step 2 : ENV DEMO_VAR WAT
---> Using cache
---> 378dbaa4a048
Step 3 : COPY docker-entrypoint.sh /
---> e5962cef9382
Removing intermediate container 43fa24c31444
Step 4 : ENTRYPOINT /docker-entrypoint.sh
---> Running in 5a2e19bf7a45
---> 331d2648d969
Removing intermediate container 5a2e19bf7a45
Successfully built 331d2648d969
Recreating exampleworkingdockercomposeenvironmentvars_some_server_1
The Error
ERROR: for some_server rpc error: code = 2 desc = "oci runtime error: exec format error"
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "compose/cli/main.py", line 63, in main
AttributeError: 'ProjectError' object has no attribute 'msg'
docker-compose returned -1
The Actual Problem and Solution:
I had a Dockerfile
that used an entrypoint that looked like ENTRYPOINT ["/docker-entrypoint.sh"]
.
The real problem was the docker-entrypoint.sh
script was missing a #shebang.
So changing this
echo "ENV Var Passed in: $DEMO_VAR"
to this
#!/bin/sh
echo "ENV Var Passed in: $DEMO_VAR"
solved my issue!
Also note it'll depend on the base image FROM <some linux distro>
that may change what you're required #shebang should be.
Whew!