in src/Cli/func/Actions/LocalActions/InitAction.cs [397:471]
private static async Task WriteDockerfile(WorkerRuntime workerRuntime, string language, string targetFramework, bool csx)
{
if (WorkerRuntimeLanguageHelper.IsDotnet(workerRuntime) && string.IsNullOrEmpty(targetFramework) && !csx)
{
var functionAppRoot = ScriptHostHelpers.GetFunctionAppRootDirectory(Environment.CurrentDirectory);
if (functionAppRoot != null)
{
targetFramework = await DotnetHelpers.DetermineTargetFramework(functionAppRoot);
}
}
if (workerRuntime == Helpers.WorkerRuntime.Dotnet)
{
if (csx)
{
await FileSystemHelpers.WriteFileIfNotExists("Dockerfile", await StaticResources.DockerfileCsxDotNet);
}
else if (targetFramework == Common.TargetFramework.Net8)
{
await FileSystemHelpers.WriteFileIfNotExists("Dockerfile", await StaticResources.DockerfileDotNet8);
}
else
{
await FileSystemHelpers.WriteFileIfNotExists("Dockerfile", await StaticResources.DockerfileDotNet);
}
}
else if (workerRuntime == Helpers.WorkerRuntime.DotnetIsolated)
{
if (targetFramework == Common.TargetFramework.Net7)
{
await FileSystemHelpers.WriteFileIfNotExists("Dockerfile", await StaticResources.DockerfileDotnet7Isolated);
}
else if (targetFramework == Common.TargetFramework.Net8)
{
await FileSystemHelpers.WriteFileIfNotExists("Dockerfile", await StaticResources.DockerfileDotnet8Isolated);
}
else if (targetFramework == Common.TargetFramework.Net9)
{
await FileSystemHelpers.WriteFileIfNotExists("Dockerfile", await StaticResources.DockerfileDotnet9Isolated);
}
else
{
await FileSystemHelpers.WriteFileIfNotExists("Dockerfile", await StaticResources.DockerfileDotnetIsolated);
}
}
else if (workerRuntime == Helpers.WorkerRuntime.Node)
{
if (language == Constants.Languages.TypeScript)
{
await FileSystemHelpers.WriteFileIfNotExists("Dockerfile", await StaticResources.DockerfileTypeScript);
}
else
{
await FileSystemHelpers.WriteFileIfNotExists("Dockerfile", await StaticResources.DockerfileJavaScript);
}
}
else if (workerRuntime == Helpers.WorkerRuntime.Python)
{
await WritePythonDockerFile();
}
else if (workerRuntime == Helpers.WorkerRuntime.Powershell)
{
await FileSystemHelpers.WriteFileIfNotExists("Dockerfile", await StaticResources.DockerfilePowershell72);
}
else if (workerRuntime == Helpers.WorkerRuntime.Custom)
{
await FileSystemHelpers.WriteFileIfNotExists("Dockerfile", await StaticResources.DockerfileCustom);
}
else if (workerRuntime == Helpers.WorkerRuntime.None)
{
throw new CliException("Can't find WorkerRuntime None");
}
await FileSystemHelpers.WriteFileIfNotExists(".dockerignore", await StaticResources.DockerIgnoreFile);
}