Server up this weekend? Docker-compose pull failing on db

#1

I am trying to load i2b2/tranSMART on my iMac. Things have gone smoothly except that the docker-compose failed on the db. The rest came through ok it seemed. Upon restarting, I am getting:

ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.

If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 900).

You can see I already moved the timeout to 900.

Any suggestions?

#2

Hi Rudy,

The timeout is only the client timeout when it is sending commands to the Docker Engine. Changing the timeout value to something higher usually helps with that. The database is very large so it can take some time for it to create volumes for persistence. You can check out the status of deploying the database by running “docker system df”

You’ll see that the size of volumes slowly increasing. That’s the database loading what it has in the image into a local volume. Once it has completed doing so, ~25GB, you should be able to run “docker-compose up -d db” even after a timeout, for the startup the database.

1 Like
#3

Thanks I will try that.

Can you tell me where it is putting the 25G? Which directory?

I have it loaded on my laptop as well and was thinking I could just copy that over to my iMa. ??

#4

Hi Rudy,

Are you using docker-machine? It is highly recommended that you do for local installations, and the answer to your question becomes very complicated if you are not.

If you are using docker-machine then you should have a virtualbox vm running in the background which is the docker-machine instance. The data is being copied within this virtualbox instance.

The first time the db container starts up all the data is copied to the /var/lib/docker/volumes/i2b2transmart-data/_data folder on this virtualbox vm before Oracle is started.

You can access this vm using 'docker-machine ssh ’ to work with the files themselves.

That being said, it is best to let the docker system handle all this copying of files. It will take you the same time to move it as it takes docker to unpack it. Additionally there is metadata that docker manages to know what state everything is in and manually creating the volume in the right state is more than just copying the files.

If you get the timeout error we have found that the process of copying is still happening in the background even after the error. If you come back later you should be able to ‘docker-compose up db’ and have the db container started without issue.

As a side note if you happen to have your power settings set too aggressively on the conservation side the machine may go to sleep during the copy which causes the timeout to have been exceeded but no work to actually have gotten done.

Hope this helps!

#5

On a mac the default (and it’s hard to change) is in
~/Library/Containers/com.docker.docker

if you use homebrew @rudypoten you can install install docker-machine with
brew install docker-machine

If you really want system performance with docker you want xhyve the BSD byhve OSX fork:
brew install xhyve docker-machine docker-machine-driver-xhyve

But this is a departure from your HTTP timeout :slight_smile:

Hit me up on slack if you are having problems related to speed, and I can walk you through this.