UNPKG

leds-spark-lib

Version:

Biblioteca de geração de código

154 lines (149 loc) 4.59 kB
import { expandToStringWithNL } from "../../models/model.js"; import fs from "fs"; import path from "path"; export function generate(model, target_folder) { generateDockerCompose(model, target_folder); fs.writeFileSync(path.join(`${target_folder}/${model.configuration?.name}/`, 'Dockerfile'), generateDockerfile(model)); fs.writeFileSync(path.join(target_folder, '.dockerignore'), generateDockerIgnore()); fs.writeFileSync(path.join(target_folder, 'launchSettings.json'), generateLaunchSettings(model)); } function generateDockerfile(model) { return expandToStringWithNL ` FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base USER app WORKDIR /app EXPOSE 8080 EXPOSE 8081 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src COPY ["${model.configuration?.name}/${model.configuration?.name}.csproj", "${model.configuration?.name}/"] RUN dotnet restore "./${model.configuration?.name}/${model.configuration?.name}.csproj" COPY . . WORKDIR "/src/${model.configuration?.name}" RUN dotnet build "./${model.configuration?.name}.csproj" -c $BUILD_CONFIGURATION -o /app/build FROM build AS publish ARG BUILD_CONFIGURATION=Release RUN dotnet publish "./${model.configuration?.name}.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "${model.configuration?.name}.dll"]`; } function generateDockerCompose(model, target_folder) { fs.writeFileSync(path.join(target_folder, 'docker-compose.dcproj'), generatedockercomposedcproj(model)); fs.writeFileSync(path.join(target_folder, 'docker-compose.yml'), generatedockercomposeyml(model)); fs.writeFileSync(path.join(target_folder, 'docker-compose.override.yml'), generateDockerComposeOverride(model)); } function generatedockercomposedcproj(model) { return expandToStringWithNL `<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk"> <PropertyGroup Label="Globals"> <ProjectVersion>2.1</ProjectVersion> <DockerTargetOS>Linux</DockerTargetOS> <DockerPublishLocally>False</DockerPublishLocally> <ProjectGuid></ProjectGuid> <DockerLaunchAction>LaunchBrowser</DockerLaunchAction> <DockerServiceUrl>{Scheme}://localhost:{ServicePort}/swagger</DockerServiceUrl> <DockerServiceName>${model.configuration?.name?.toLowerCase()}</DockerServiceName> </PropertyGroup> <ItemGroup> <None Include="docker-compose.override.yml"> <DependentUpon>docker-compose.yml</DependentUpon> </None> <None Include="docker-compose.yml" /> <None Include=".dockerignore" /> </ItemGroup> </Project>`; } function generateDockerIgnore() { return expandToStringWithNL ` **/.classpath **/.dockerignore **/.env **/.git **/.gitignore **/.project **/.settings **/.toolstarget **/.vs **/.vscode **/*.*proj.user **/*.dbmdl **/*.jfm **/azds.yaml **/bin **/charts **/docker-compose* **/Dockerfile* **/node_modules **/npm-debug.log **/obj **/secrets.dev.yaml **/values.dev.yaml LICENSE README.md !**/.gitignore !.git/HEAD !.git/config !.git/packed-refs !.git/refs/heads/**`; } function generatedockercomposeyml(model) { return expandToStringWithNL ` networks: backend: services: sqlserver: container_name: sqlserver image: mcr.microsoft.com/mssql/server environment: - ACCEPT_EULA=Y - MSSQL_SA_PASSWORD=Senha@123 networks: - backend ports: - "1433:1433" ${model.configuration?.name?.toLowerCase()}: build: context: . dockerfile: ${model.configuration?.name}/Dockerfile networks: - backend ports: - "8080:8080" - "8081:8081" depends_on: - sqlserver`; } function generateLaunchSettings(model) { return expandToStringWithNL ` { "profiles": { "Docker Compose": { "commandName": "DockerCompose", "commandVersion": "1.0", "serviceActions": { "${model.configuration?.name}": "StartDebugging" } } } }`; } function generateDockerComposeOverride(model) { return expandToStringWithNL ` version: '3.4' services: ${model.configuration?.name?.toLowerCase()}: environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_HTTP_PORTS=8080 - ASPNETCORE_HTTPS_PORTS=8081 ports: - "8080" - "8081" volumes: - \${APPDATA}/Microsoft/UserSecrets:/home/app/.microsoft/usersecrets:ro - \${APPDATA}/ASP.NET/Https:/home/app/.aspnet/https:ro`; } //# sourceMappingURL=docker-generator.js.map