Accessing host's api from inside a container
I’m trying to make a build env with docker and i want to make this automatic. i’ve written a custom go binary to handle build stuff and i’ve built an image which has
the go binary,
java8 sdk installed.
The steps that binary does are:
- Clone a git repo
- Run build command
- Extract build artifacts to host. (which hasnt done yet.)
I’m passing repo url as parameter to binary while running container and it does build.
But the problem is i need those artifacts in order to run builted app.
I know i can use
volumes, but i dont want to use them because when build has done volumes are becoming
dangle and it needs a job for deleting those
I thought i can create an api for saving files into host (that means i have to run that api inside host machine) and my custom go binary can send files to the api and api will do the saving.
But when it comes to calling host from inside a container i’ve got a problem. i’m getting
connection refused to port xx error.
Is there a better way to do it , or should i change my approach?
2 Solutions collect form web for “Accessing host's api from inside a container”
found an answer on accessing-host-machine-as-localhost-from-a-docker-container-thats-also-inside
Running container with
--add-host option is the answer.
While you could use
docker cp CONTAINER:SRC_PATH DEST_PATH
to get the files out of your container, I still believe using a volume is the better idea. Instead of using an anonymous volume use a named one:
docker run -v /local/host/dir:/build/output YOURIMAGE
This allows you to pick up the artefacts on your host from the /local/host/dir