0

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, maven and 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 dangling volumes.

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?

afrikaan
  • 425
  • 5
  • 21

2 Answers2

2

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.

afrikaan
  • 425
  • 5
  • 21
0

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

https://docs.docker.com/engine/tutorials/dockervolumes/#locate-a-volume

Nodebody
  • 1,433
  • 11
  • 14
  • if i had a chance to accomplish this by api's i want to use it. i know i can use that but it isnt automatic way. – afrikaan Jun 02 '17 at 08:49