split the docker into 3 parts & add a makefile