You need to create a scwdp package that does not contain the databases. Basicly this is the same as you would do if you clean your website with every deploy and redeploy sitecore on to it.
This "package without database" can be created from the original one, by running a powershell script. Find out how to do this on my blog: http://onelittlespark.bartverdonck.be/sitecore-9-in-azure-paas-for-dummies-2/ (The series is focussed arround PaaS, but would also address your question.)
##########################################################################
#
# Usage: manualy extract the parameters.xml file from the original .scwdp.zip file and reference in this file.
# Fill in the packagepath and paramfile path.
#
##########################################################################
$PackagePath = "c:\Projects\sitecore_single.scwdp.zip"
$ParamFile = "C:\Temp\parameters.xml"
##########################################################################
$PackageDestinationPath = $($PackagePath).Replace(".scwdp.zip", "-nodb.scwdp.zip")
$msdeploy = "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe"
$verb = "-verb:sync"
$source = "-source:package=`"$PackagePath`""
$destination = "-dest:package=`"$($PackageDestinationPath)`""
$declareParamFile = "-declareparamfile=`"$($ParamFile)`""
$skipDbFullSQL = "-skip:objectName=dbFullSql"
$skipDbDacFx = "-skip:objectName=dbDacFx"
# read parameter file
[xml]$paramfile_content = Get-Content -Path $ParamFile
$paramfile_paramnames = $paramfile_content.parameters.parameter.name
$params = ""
foreach($paramname in $paramfile_paramnames){
$tmpvalue = "tmpvalue"
if($paramname -eq "License Xml"){ $tmpvalue = "LicenseContent"}
if($paramname -eq "IP Security Client IP"){ $tmpvalue = "0.0.0.0"}
if($paramname -eq "IP Security Client IP Mask"){ $tmpvalue = "0.0.0.0"}
$params = "$params -setParam:`"$paramname`"=`"$tmpvalue`""
}
# create new package
Invoke-Expression "& '$msdeploy' --% $verb $source $destination
$declareParamFile $skipDbFullSQL $skipDbDacFx $params"