Q:

copy files during GCP instance creation from python

I am using the googleapiclient in python to launch VM instances.  As part of that I am using the facility to run start up scripts  to install docker and other python packages. 
Now, one thing I would like to do is copy files to this instance ideally during the instance creation stage through python code. 
What might be the way to achieve this?  Ideally what would work is to be able to detect that the instance has booted and then be able to copy these files. 

A:

If I am hearing you correctly, you want files to be present inside the container that is being executed by Docker in your Compute Engine VM.   Your Startup Script for the Compute Engine is installing docker. 
My recommendation is not to try and copy those files into the container but instead, have them available on the local file system available to the Compute Engine.   Configure your docker startup to then mount the directory from the Compute Engine into the docker container.   Inside the docker container, you would now have accessibility to the desired files. 
As for bringing the files into the Compute Engine environment in the first place, we have a number of options.   The core story however will be describing where the files start from in the first place. 
One common approach is to keep the files that you want copied into the VM in a Google Cloud Storage (GCS) bucket/folder.   From there, your startup script can use GCS API or the gsutil command to copy the files from the GCS bucket to the local file system. 
Another thought, and again, this depends on the nature of the files ... is that you can create a GCP disk that simply "contains" the files.   When you now create a new Compute Engine instance, that instance could be defined to mount the disk which is shared read-only across all the VM instances.