See grdimage first (with remote dataset like @earth or others), then coast.
Both are well documented 
The general framework would be:
ˋ
gmt begin mymap png
gmt grdimage -R(region) -J(projection) […] #first layer
gmt coast […] # second layer, which remembers the region and projection from first one
gmt end show
ˋ`ˋ