Added expose port for Services
This commit is contained in:
parent
40cbee0d75
commit
f94e17134e
@ -0,0 +1,2 @@
|
|||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "Service" ADD COLUMN "exposePort" INTEGER;
|
@ -287,6 +287,7 @@ model Service {
|
|||||||
id String @id @default(cuid())
|
id String @id @default(cuid())
|
||||||
name String
|
name String
|
||||||
fqdn String?
|
fqdn String?
|
||||||
|
exposePort Int?
|
||||||
dualCerts Boolean @default(false)
|
dualCerts Boolean @default(false)
|
||||||
type String?
|
type String?
|
||||||
version String?
|
version String?
|
||||||
|
@ -193,3 +193,11 @@ export const supportedServiceTypesAndVersions = [
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const getServiceMainPort = (service: string) => {
|
||||||
|
const serviceType = supportedServiceTypesAndVersions.find((s) => s.name === service);
|
||||||
|
if (serviceType) {
|
||||||
|
return serviceType.ports.main;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
@ -276,95 +276,109 @@ export async function updatePlausibleAnalyticsService({
|
|||||||
id,
|
id,
|
||||||
fqdn,
|
fqdn,
|
||||||
email,
|
email,
|
||||||
|
exposePort,
|
||||||
username,
|
username,
|
||||||
name
|
name
|
||||||
}: {
|
}: {
|
||||||
id: string;
|
id: string;
|
||||||
fqdn: string;
|
fqdn: string;
|
||||||
|
exposePort?: number;
|
||||||
name: string;
|
name: string;
|
||||||
email: string;
|
email: string;
|
||||||
username: string;
|
username: string;
|
||||||
}): Promise<void> {
|
}): Promise<void> {
|
||||||
await prisma.plausibleAnalytics.update({ where: { serviceId: id }, data: { email, username } });
|
await prisma.plausibleAnalytics.update({ where: { serviceId: id }, data: { email, username } });
|
||||||
await prisma.service.update({ where: { id }, data: { name, fqdn } });
|
await prisma.service.update({ where: { id }, data: { name, fqdn, exposePort } });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function updateService({
|
export async function updateService({
|
||||||
id,
|
id,
|
||||||
fqdn,
|
fqdn,
|
||||||
|
exposePort,
|
||||||
name
|
name
|
||||||
}: {
|
}: {
|
||||||
id: string;
|
id: string;
|
||||||
fqdn: string;
|
fqdn: string;
|
||||||
|
exposePort?: number;
|
||||||
name: string;
|
name: string;
|
||||||
}): Promise<Service> {
|
}): Promise<Service> {
|
||||||
return await prisma.service.update({ where: { id }, data: { fqdn, name } });
|
return await prisma.service.update({ where: { id }, data: { fqdn, name, exposePort } });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function updateLanguageToolService({
|
export async function updateLanguageToolService({
|
||||||
id,
|
id,
|
||||||
fqdn,
|
fqdn,
|
||||||
|
exposePort,
|
||||||
name
|
name
|
||||||
}: {
|
}: {
|
||||||
id: string;
|
id: string;
|
||||||
fqdn: string;
|
fqdn: string;
|
||||||
|
exposePort?: number;
|
||||||
name: string;
|
name: string;
|
||||||
}): Promise<Service> {
|
}): Promise<Service> {
|
||||||
return await prisma.service.update({ where: { id }, data: { fqdn, name } });
|
return await prisma.service.update({ where: { id }, data: { fqdn, name, exposePort } });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function updateMeiliSearchService({
|
export async function updateMeiliSearchService({
|
||||||
id,
|
id,
|
||||||
fqdn,
|
fqdn,
|
||||||
|
exposePort,
|
||||||
name
|
name
|
||||||
}: {
|
}: {
|
||||||
id: string;
|
id: string;
|
||||||
fqdn: string;
|
fqdn: string;
|
||||||
|
exposePort?: number;
|
||||||
name: string;
|
name: string;
|
||||||
}): Promise<Service> {
|
}): Promise<Service> {
|
||||||
return await prisma.service.update({ where: { id }, data: { fqdn, name } });
|
return await prisma.service.update({ where: { id }, data: { fqdn, name, exposePort } });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function updateVaultWardenService({
|
export async function updateVaultWardenService({
|
||||||
id,
|
id,
|
||||||
fqdn,
|
fqdn,
|
||||||
|
exposePort,
|
||||||
name
|
name
|
||||||
}: {
|
}: {
|
||||||
id: string;
|
id: string;
|
||||||
fqdn: string;
|
fqdn: string;
|
||||||
|
exposePort?: number;
|
||||||
name: string;
|
name: string;
|
||||||
}): Promise<Service> {
|
}): Promise<Service> {
|
||||||
return await prisma.service.update({ where: { id }, data: { fqdn, name } });
|
return await prisma.service.update({ where: { id }, data: { fqdn, name, exposePort } });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function updateVsCodeServer({
|
export async function updateVsCodeServer({
|
||||||
id,
|
id,
|
||||||
fqdn,
|
fqdn,
|
||||||
|
exposePort,
|
||||||
name
|
name
|
||||||
}: {
|
}: {
|
||||||
id: string;
|
id: string;
|
||||||
fqdn: string;
|
fqdn: string;
|
||||||
|
exposePort?: number;
|
||||||
name: string;
|
name: string;
|
||||||
}): Promise<Service> {
|
}): Promise<Service> {
|
||||||
return await prisma.service.update({ where: { id }, data: { fqdn, name } });
|
return await prisma.service.update({ where: { id }, data: { fqdn, name, exposePort } });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function updateWordpress({
|
export async function updateWordpress({
|
||||||
id,
|
id,
|
||||||
fqdn,
|
fqdn,
|
||||||
name,
|
name,
|
||||||
|
exposePort,
|
||||||
mysqlDatabase,
|
mysqlDatabase,
|
||||||
extraConfig
|
extraConfig
|
||||||
}: {
|
}: {
|
||||||
id: string;
|
id: string;
|
||||||
fqdn: string;
|
fqdn: string;
|
||||||
name: string;
|
name: string;
|
||||||
|
exposePort?: number;
|
||||||
mysqlDatabase: string;
|
mysqlDatabase: string;
|
||||||
extraConfig: string;
|
extraConfig: string;
|
||||||
}): Promise<Service> {
|
}): Promise<Service> {
|
||||||
return await prisma.service.update({
|
return await prisma.service.update({
|
||||||
where: { id },
|
where: { id },
|
||||||
data: { fqdn, name, wordpress: { update: { mysqlDatabase, extraConfig } } }
|
data: { fqdn, name, exposePort, wordpress: { update: { mysqlDatabase, extraConfig } } }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,16 +396,18 @@ export async function updateGhostService({
|
|||||||
id,
|
id,
|
||||||
fqdn,
|
fqdn,
|
||||||
name,
|
name,
|
||||||
|
exposePort,
|
||||||
mariadbDatabase
|
mariadbDatabase
|
||||||
}: {
|
}: {
|
||||||
id: string;
|
id: string;
|
||||||
fqdn: string;
|
fqdn: string;
|
||||||
name: string;
|
name: string;
|
||||||
|
exposePort?: number;
|
||||||
mariadbDatabase: string;
|
mariadbDatabase: string;
|
||||||
}): Promise<Service> {
|
}): Promise<Service> {
|
||||||
return await prisma.service.update({
|
return await prisma.service.update({
|
||||||
where: { id },
|
where: { id },
|
||||||
data: { fqdn, name, ghost: { update: { mariadbDatabase } } }
|
data: { fqdn, name, exposePort, ghost: { update: { mariadbDatabase } } }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +189,7 @@ export default async function (job: Job<BuilderJob, void, string>): Promise<void
|
|||||||
}
|
}
|
||||||
if (!imageFound || deployNeeded) {
|
if (!imageFound || deployNeeded) {
|
||||||
await copyBaseConfigurationFiles(buildPack, workdir, buildId, applicationId);
|
await copyBaseConfigurationFiles(buildPack, workdir, buildId, applicationId);
|
||||||
console.log(exposePort ? `${exposePort}:${port}` : port);
|
|
||||||
if (buildpacks[buildPack])
|
if (buildpacks[buildPack])
|
||||||
await buildpacks[buildPack]({
|
await buildpacks[buildPack]({
|
||||||
buildId,
|
buildId,
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
let loading = false;
|
let loading = false;
|
||||||
let loadingVerification = false;
|
let loadingVerification = false;
|
||||||
let dualCerts = service.dualCerts;
|
let dualCerts = service.dualCerts;
|
||||||
|
let showExposePort = service.exposePort !== null;
|
||||||
|
|
||||||
async function handleSubmit() {
|
async function handleSubmit() {
|
||||||
loading = true;
|
loading = true;
|
||||||
@ -158,6 +159,32 @@
|
|||||||
on:click={() => !isRunning && changeSettings('dualCerts')}
|
on:click={() => !isRunning && changeSettings('dualCerts')}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="grid grid-cols-2 items-center">
|
||||||
|
<Setting
|
||||||
|
isCenter={false}
|
||||||
|
bind:setting={showExposePort}
|
||||||
|
on:click={() => {
|
||||||
|
showExposePort = !showExposePort;
|
||||||
|
service.exposePort = undefined;
|
||||||
|
}}
|
||||||
|
title={$t('application.expose_a_port')}
|
||||||
|
description="Expose a port to the host system"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if showExposePort}
|
||||||
|
<div class="grid grid-cols-2 items-center">
|
||||||
|
<label for="exposePort" class="text-base font-bold text-stone-100">Expose Port</label>
|
||||||
|
<input
|
||||||
|
readonly={!$session.isAdmin}
|
||||||
|
name="exposePort"
|
||||||
|
id="exposePort"
|
||||||
|
bind:value={service.exposePort}
|
||||||
|
placeholder="12345"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
{#if service.type === 'plausibleanalytics'}
|
{#if service.type === 'plausibleanalytics'}
|
||||||
<PlausibleAnalytics bind:service {readOnly} />
|
<PlausibleAnalytics bind:service {readOnly} />
|
||||||
{:else if service.type === 'minio'}
|
{:else if service.type === 'minio'}
|
||||||
|
@ -11,11 +11,12 @@ export const post: RequestHandler = async (event) => {
|
|||||||
let {
|
let {
|
||||||
name,
|
name,
|
||||||
fqdn,
|
fqdn,
|
||||||
|
exposePort,
|
||||||
ghost: { mariadbDatabase }
|
ghost: { mariadbDatabase }
|
||||||
} = await event.request.json();
|
} = await event.request.json();
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
try {
|
try {
|
||||||
await db.updateGhostService({ id, fqdn, name, mariadbDatabase });
|
await db.updateGhostService({ id, fqdn, name, exposePort, mariadbDatabase });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
|
@ -12,6 +12,7 @@ import type { RequestHandler } from '@sveltejs/kit';
|
|||||||
import { ErrorHandler, getServiceImage } from '$lib/database';
|
import { ErrorHandler, getServiceImage } from '$lib/database';
|
||||||
import { makeLabelForServices } from '$lib/buildPacks/common';
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -19,6 +20,8 @@ export const post: RequestHandler = async (event) => {
|
|||||||
|
|
||||||
const { id } = event.params;
|
const { id } = event.params;
|
||||||
|
|
||||||
|
const port = getServiceMainPort('ghost');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const service = await db.getService({ id, teamId });
|
const service = await db.getService({ id, teamId });
|
||||||
const {
|
const {
|
||||||
@ -27,6 +30,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
destinationDockerId,
|
destinationDockerId,
|
||||||
destinationDocker,
|
destinationDocker,
|
||||||
serviceSecret,
|
serviceSecret,
|
||||||
|
exposePort,
|
||||||
fqdn,
|
fqdn,
|
||||||
ghost: {
|
ghost: {
|
||||||
defaultEmail,
|
defaultEmail,
|
||||||
@ -89,6 +93,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
volumes: [config.ghost.volume],
|
volumes: [config.ghost.volume],
|
||||||
environment: config.ghost.environmentVariables,
|
environment: config.ghost.environmentVariables,
|
||||||
restart: 'always',
|
restart: 'always',
|
||||||
|
...(exposePort ? { ports: [`${exposePort}:${port}`] } : {}),
|
||||||
labels: makeLabelForServices('ghost'),
|
labels: makeLabelForServices('ghost'),
|
||||||
depends_on: [`${id}-mariadb`],
|
depends_on: [`${id}-mariadb`],
|
||||||
deploy: {
|
deploy: {
|
||||||
|
@ -9,13 +9,15 @@ export const post: RequestHandler = async (event) => {
|
|||||||
|
|
||||||
const { id } = event.params;
|
const { id } = event.params;
|
||||||
|
|
||||||
let { name, fqdn } = await event.request.json();
|
let { name, fqdn, exposePort } = await event.request.json();
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await db.updateService({ id, fqdn, name });
|
await db.updateService({ id, fqdn, name, exposePort });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,7 @@ import type { RequestHandler } from '@sveltejs/kit';
|
|||||||
import { ErrorHandler, getServiceImage } from '$lib/database';
|
import { ErrorHandler, getServiceImage } from '$lib/database';
|
||||||
import { makeLabelForServices } from '$lib/buildPacks/common';
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -15,9 +16,11 @@ export const post: RequestHandler = async (event) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const service = await db.getService({ id, teamId });
|
const service = await db.getService({ id, teamId });
|
||||||
const { type, version, destinationDockerId, destinationDocker, serviceSecret } = service;
|
const { type, version, destinationDockerId, destinationDocker, serviceSecret, exposePort } =
|
||||||
|
service;
|
||||||
const network = destinationDockerId && destinationDocker.network;
|
const network = destinationDockerId && destinationDocker.network;
|
||||||
const host = getEngine(destinationDocker.engine);
|
const host = getEngine(destinationDocker.engine);
|
||||||
|
const port = getServiceMainPort('languagetool');
|
||||||
|
|
||||||
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
||||||
const image = getServiceImage(type);
|
const image = getServiceImage(type);
|
||||||
@ -42,6 +45,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
networks: [network],
|
networks: [network],
|
||||||
environment: config.environmentVariables,
|
environment: config.environmentVariables,
|
||||||
restart: 'always',
|
restart: 'always',
|
||||||
|
...(exposePort ? { ports: [`${exposePort}:${port}`] } : {}),
|
||||||
volumes: [config.volume],
|
volumes: [config.volume],
|
||||||
labels: makeLabelForServices('languagetool'),
|
labels: makeLabelForServices('languagetool'),
|
||||||
deploy: {
|
deploy: {
|
||||||
|
@ -9,11 +9,12 @@ export const post: RequestHandler = async (event) => {
|
|||||||
|
|
||||||
const { id } = event.params;
|
const { id } = event.params;
|
||||||
|
|
||||||
let { name, fqdn } = await event.request.json();
|
let { name, fqdn, exposePort } = await event.request.json();
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await db.updateService({ id, fqdn, name });
|
await db.updateService({ id, fqdn, name, exposePort });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
|
@ -6,6 +6,7 @@ import type { RequestHandler } from '@sveltejs/kit';
|
|||||||
import { ErrorHandler, getServiceImage } from '$lib/database';
|
import { ErrorHandler, getServiceImage } from '$lib/database';
|
||||||
import { makeLabelForServices } from '$lib/buildPacks/common';
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -18,9 +19,11 @@ export const post: RequestHandler = async (event) => {
|
|||||||
const {
|
const {
|
||||||
meiliSearch: { masterKey }
|
meiliSearch: { masterKey }
|
||||||
} = service;
|
} = service;
|
||||||
const { type, version, destinationDockerId, destinationDocker, serviceSecret } = service;
|
const { type, version, destinationDockerId, destinationDocker, serviceSecret, exposePort } =
|
||||||
|
service;
|
||||||
const network = destinationDockerId && destinationDocker.network;
|
const network = destinationDockerId && destinationDocker.network;
|
||||||
const host = getEngine(destinationDocker.engine);
|
const host = getEngine(destinationDocker.engine);
|
||||||
|
const port = getServiceMainPort('meilisearch');
|
||||||
|
|
||||||
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
||||||
const image = getServiceImage(type);
|
const image = getServiceImage(type);
|
||||||
@ -47,6 +50,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
networks: [network],
|
networks: [network],
|
||||||
environment: config.environmentVariables,
|
environment: config.environmentVariables,
|
||||||
restart: 'always',
|
restart: 'always',
|
||||||
|
...(exposePort ? { ports: [`${exposePort}:${port}`] } : {}),
|
||||||
volumes: [config.volume],
|
volumes: [config.volume],
|
||||||
labels: makeLabelForServices('meilisearch'),
|
labels: makeLabelForServices('meilisearch'),
|
||||||
deploy: {
|
deploy: {
|
||||||
|
@ -9,11 +9,12 @@ export const post: RequestHandler = async (event) => {
|
|||||||
|
|
||||||
const { id } = event.params;
|
const { id } = event.params;
|
||||||
|
|
||||||
let { name, fqdn } = await event.request.json();
|
let { name, fqdn, exposePort } = await event.request.json();
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await db.updateService({ id, fqdn, name });
|
await db.updateService({ id, fqdn, name, exposePort });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
|
@ -7,6 +7,7 @@ import { startHttpProxy } from '$lib/haproxy';
|
|||||||
import { ErrorHandler, getFreePort, getServiceImage } from '$lib/database';
|
import { ErrorHandler, getFreePort, getServiceImage } from '$lib/database';
|
||||||
import { makeLabelForServices } from '$lib/buildPacks/common';
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -22,12 +23,14 @@ export const post: RequestHandler = async (event) => {
|
|||||||
fqdn,
|
fqdn,
|
||||||
destinationDockerId,
|
destinationDockerId,
|
||||||
destinationDocker,
|
destinationDocker,
|
||||||
|
exposePort,
|
||||||
minio: { rootUser, rootUserPassword },
|
minio: { rootUser, rootUserPassword },
|
||||||
serviceSecret
|
serviceSecret
|
||||||
} = service;
|
} = service;
|
||||||
|
|
||||||
const network = destinationDockerId && destinationDocker.network;
|
const network = destinationDockerId && destinationDocker.network;
|
||||||
const host = getEngine(destinationDocker.engine);
|
const host = getEngine(destinationDocker.engine);
|
||||||
|
const port = getServiceMainPort('minio');
|
||||||
|
|
||||||
const publicPort = await getFreePort();
|
const publicPort = await getFreePort();
|
||||||
|
|
||||||
@ -62,6 +65,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
networks: [network],
|
networks: [network],
|
||||||
volumes: [config.volume],
|
volumes: [config.volume],
|
||||||
restart: 'always',
|
restart: 'always',
|
||||||
|
...(exposePort && { ports: [`${port}:${port}`] }),
|
||||||
labels: makeLabelForServices('minio'),
|
labels: makeLabelForServices('minio'),
|
||||||
deploy: {
|
deploy: {
|
||||||
restart_policy: {
|
restart_policy: {
|
||||||
|
@ -8,11 +8,12 @@ export const post: RequestHandler = async (event) => {
|
|||||||
if (status === 401) return { status, body };
|
if (status === 401) return { status, body };
|
||||||
const { id } = event.params;
|
const { id } = event.params;
|
||||||
|
|
||||||
let { name, fqdn } = await event.request.json();
|
let { name, fqdn, exposePort } = await event.request.json();
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await db.updateService({ id, fqdn, name });
|
await db.updateService({ id, fqdn, name, exposePort });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
|
@ -6,6 +6,7 @@ import type { RequestHandler } from '@sveltejs/kit';
|
|||||||
import { ErrorHandler, getServiceImage } from '$lib/database';
|
import { ErrorHandler, getServiceImage } from '$lib/database';
|
||||||
import { makeLabelForServices } from '$lib/buildPacks/common';
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -15,9 +16,11 @@ export const post: RequestHandler = async (event) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const service = await db.getService({ id, teamId });
|
const service = await db.getService({ id, teamId });
|
||||||
const { type, version, destinationDockerId, destinationDocker, serviceSecret } = service;
|
const { type, version, destinationDockerId, destinationDocker, serviceSecret, exposePort } =
|
||||||
|
service;
|
||||||
const network = destinationDockerId && destinationDocker.network;
|
const network = destinationDockerId && destinationDocker.network;
|
||||||
const host = getEngine(destinationDocker.engine);
|
const host = getEngine(destinationDocker.engine);
|
||||||
|
const port = getServiceMainPort('n8n');
|
||||||
|
|
||||||
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
||||||
const image = getServiceImage(type);
|
const image = getServiceImage(type);
|
||||||
|
@ -8,11 +8,12 @@ export const post: RequestHandler = async (event) => {
|
|||||||
if (status === 401) return { status, body };
|
if (status === 401) return { status, body };
|
||||||
const { id } = event.params;
|
const { id } = event.params;
|
||||||
|
|
||||||
let { name, fqdn } = await event.request.json();
|
let { name, fqdn, exposePort } = await event.request.json();
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await db.updateService({ id, fqdn, name });
|
await db.updateService({ id, fqdn, name, exposePort });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
|
@ -6,6 +6,7 @@ import type { RequestHandler } from '@sveltejs/kit';
|
|||||||
import { ErrorHandler, getServiceImage } from '$lib/database';
|
import { ErrorHandler, getServiceImage } from '$lib/database';
|
||||||
import { makeLabelForServices } from '$lib/buildPacks/common';
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -15,9 +16,11 @@ export const post: RequestHandler = async (event) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const service = await db.getService({ id, teamId });
|
const service = await db.getService({ id, teamId });
|
||||||
const { type, version, destinationDockerId, destinationDocker, serviceSecret } = service;
|
const { type, version, destinationDockerId, destinationDocker, serviceSecret, exposePort } =
|
||||||
|
service;
|
||||||
const network = destinationDockerId && destinationDocker.network;
|
const network = destinationDockerId && destinationDocker.network;
|
||||||
const host = getEngine(destinationDocker.engine);
|
const host = getEngine(destinationDocker.engine);
|
||||||
|
const port = getServiceMainPort('nocodb');
|
||||||
|
|
||||||
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
||||||
const image = getServiceImage(type);
|
const image = getServiceImage(type);
|
||||||
@ -40,6 +43,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
networks: [network],
|
networks: [network],
|
||||||
environment: config.environmentVariables,
|
environment: config.environmentVariables,
|
||||||
restart: 'always',
|
restart: 'always',
|
||||||
|
...(exposePort ? { ports: [`${exposePort}:${port}`] } : {}),
|
||||||
labels: makeLabelForServices('nocodb'),
|
labels: makeLabelForServices('nocodb'),
|
||||||
deploy: {
|
deploy: {
|
||||||
restart_policy: {
|
restart_policy: {
|
||||||
|
@ -11,14 +11,16 @@ export const post: RequestHandler = async (event) => {
|
|||||||
let {
|
let {
|
||||||
name,
|
name,
|
||||||
fqdn,
|
fqdn,
|
||||||
|
exposePort,
|
||||||
plausibleAnalytics: { email, username }
|
plausibleAnalytics: { email, username }
|
||||||
} = await event.request.json();
|
} = await event.request.json();
|
||||||
|
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
if (email) email = email.toLowerCase();
|
if (email) email = email.toLowerCase();
|
||||||
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await db.updatePlausibleAnalyticsService({ id, fqdn, name, email, username });
|
await db.updatePlausibleAnalyticsService({ id, fqdn, name, email, username, exposePort });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
|
@ -6,6 +6,7 @@ import type { RequestHandler } from '@sveltejs/kit';
|
|||||||
import { ErrorHandler, getServiceImage } from '$lib/database';
|
import { ErrorHandler, getServiceImage } from '$lib/database';
|
||||||
import { makeLabelForServices } from '$lib/buildPacks/common';
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -22,6 +23,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
destinationDockerId,
|
destinationDockerId,
|
||||||
destinationDocker,
|
destinationDocker,
|
||||||
serviceSecret,
|
serviceSecret,
|
||||||
|
exposePort,
|
||||||
plausibleAnalytics: {
|
plausibleAnalytics: {
|
||||||
id: plausibleDbId,
|
id: plausibleDbId,
|
||||||
username,
|
username,
|
||||||
@ -78,6 +80,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
}
|
}
|
||||||
const network = destinationDockerId && destinationDocker.network;
|
const network = destinationDockerId && destinationDocker.network;
|
||||||
const host = getEngine(destinationDocker.engine);
|
const host = getEngine(destinationDocker.engine);
|
||||||
|
const port = getServiceMainPort('plausibleanalytics');
|
||||||
|
|
||||||
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
||||||
|
|
||||||
@ -132,6 +135,7 @@ COPY ./init-db.sh /docker-entrypoint-initdb.d/init-db.sh`;
|
|||||||
networks: [network],
|
networks: [network],
|
||||||
environment: config.plausibleAnalytics.environmentVariables,
|
environment: config.plausibleAnalytics.environmentVariables,
|
||||||
restart: 'always',
|
restart: 'always',
|
||||||
|
...(exposePort && { ports: [`${port}:${exposePort}`] }),
|
||||||
depends_on: [`${id}-postgresql`, `${id}-clickhouse`],
|
depends_on: [`${id}-postgresql`, `${id}-clickhouse`],
|
||||||
labels: makeLabelForServices('plausibleAnalytics'),
|
labels: makeLabelForServices('plausibleAnalytics'),
|
||||||
deploy: {
|
deploy: {
|
||||||
|
@ -9,11 +9,12 @@ export const post: RequestHandler = async (event) => {
|
|||||||
|
|
||||||
const { id } = event.params;
|
const { id } = event.params;
|
||||||
|
|
||||||
let { name, fqdn } = await event.request.json();
|
let { name, fqdn, exposePort } = await event.request.json();
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await db.updateService({ id, fqdn, name });
|
await db.updateService({ id, fqdn, name, exposePort });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
|
@ -8,6 +8,7 @@ import { makeLabelForServices } from '$lib/buildPacks/common';
|
|||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
import type { Service, DestinationDocker, Prisma } from '@prisma/client';
|
import type { Service, DestinationDocker, Prisma } from '@prisma/client';
|
||||||
import bcrypt from 'bcryptjs';
|
import bcrypt from 'bcryptjs';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -24,6 +25,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
destinationDockerId,
|
destinationDockerId,
|
||||||
destinationDocker,
|
destinationDocker,
|
||||||
serviceSecret,
|
serviceSecret,
|
||||||
|
exposePort,
|
||||||
umami: {
|
umami: {
|
||||||
umamiAdminPassword,
|
umamiAdminPassword,
|
||||||
postgresqlUser,
|
postgresqlUser,
|
||||||
@ -34,6 +36,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
} = service;
|
} = service;
|
||||||
const network = destinationDockerId && destinationDocker.network;
|
const network = destinationDockerId && destinationDocker.network;
|
||||||
const host = getEngine(destinationDocker.engine);
|
const host = getEngine(destinationDocker.engine);
|
||||||
|
const port = getServiceMainPort('umami');
|
||||||
|
|
||||||
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
||||||
const image = getServiceImage(type);
|
const image = getServiceImage(type);
|
||||||
@ -156,6 +159,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
networks: [network],
|
networks: [network],
|
||||||
volumes: [],
|
volumes: [],
|
||||||
restart: 'always',
|
restart: 'always',
|
||||||
|
...(exposePort ? { ports: [`${port}:${port}`] } : {}),
|
||||||
labels: makeLabelForServices('umami'),
|
labels: makeLabelForServices('umami'),
|
||||||
deploy: {
|
deploy: {
|
||||||
restart_policy: {
|
restart_policy: {
|
||||||
|
@ -8,11 +8,12 @@ export const post: RequestHandler = async (event) => {
|
|||||||
if (status === 401) return { status, body };
|
if (status === 401) return { status, body };
|
||||||
const { id } = event.params;
|
const { id } = event.params;
|
||||||
|
|
||||||
let { name, fqdn } = await event.request.json();
|
let { name, fqdn, exposePort } = await event.request.json();
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await db.updateService({ id, fqdn, name });
|
await db.updateService({ id, fqdn, name, exposePort });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
|
@ -6,6 +6,7 @@ import type { RequestHandler } from '@sveltejs/kit';
|
|||||||
import { ErrorHandler, getServiceImage } from '$lib/database';
|
import { ErrorHandler, getServiceImage } from '$lib/database';
|
||||||
import { makeLabelForServices } from '$lib/buildPacks/common';
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -15,9 +16,11 @@ export const post: RequestHandler = async (event) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const service = await db.getService({ id, teamId });
|
const service = await db.getService({ id, teamId });
|
||||||
const { type, version, destinationDockerId, destinationDocker, serviceSecret } = service;
|
const { type, version, destinationDockerId, destinationDocker, serviceSecret, exposePort } =
|
||||||
|
service;
|
||||||
const network = destinationDockerId && destinationDocker.network;
|
const network = destinationDockerId && destinationDocker.network;
|
||||||
const host = getEngine(destinationDocker.engine);
|
const host = getEngine(destinationDocker.engine);
|
||||||
|
const port = getServiceMainPort('uptimekuma');
|
||||||
|
|
||||||
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
||||||
const image = getServiceImage(type);
|
const image = getServiceImage(type);
|
||||||
@ -42,6 +45,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
volumes: [config.volume],
|
volumes: [config.volume],
|
||||||
environment: config.environmentVariables,
|
environment: config.environmentVariables,
|
||||||
restart: 'always',
|
restart: 'always',
|
||||||
|
...(exposePort ? { ports: [`${exposePort}:${port}`] } : {}),
|
||||||
labels: makeLabelForServices('uptimekuma'),
|
labels: makeLabelForServices('uptimekuma'),
|
||||||
deploy: {
|
deploy: {
|
||||||
restart_policy: {
|
restart_policy: {
|
||||||
|
@ -8,11 +8,12 @@ export const post: RequestHandler = async (event) => {
|
|||||||
if (status === 401) return { status, body };
|
if (status === 401) return { status, body };
|
||||||
const { id } = event.params;
|
const { id } = event.params;
|
||||||
|
|
||||||
let { name, fqdn } = await event.request.json();
|
let { name, fqdn, exposePort } = await event.request.json();
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await db.updateService({ id, fqdn, name });
|
await db.updateService({ id, fqdn, name, exposePort });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
|
@ -6,6 +6,7 @@ import type { RequestHandler } from '@sveltejs/kit';
|
|||||||
import { getServiceImage, ErrorHandler } from '$lib/database';
|
import { getServiceImage, ErrorHandler } from '$lib/database';
|
||||||
import { makeLabelForServices } from '$lib/buildPacks/common';
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -15,10 +16,12 @@ export const post: RequestHandler = async (event) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const service = await db.getService({ id, teamId });
|
const service = await db.getService({ id, teamId });
|
||||||
const { type, version, destinationDockerId, destinationDocker, serviceSecret } = service;
|
const { type, version, destinationDockerId, destinationDocker, serviceSecret, exposePort } =
|
||||||
|
service;
|
||||||
|
|
||||||
const network = destinationDockerId && destinationDocker.network;
|
const network = destinationDockerId && destinationDocker.network;
|
||||||
const host = getEngine(destinationDocker.engine);
|
const host = getEngine(destinationDocker.engine);
|
||||||
|
const port = getServiceMainPort('vaultwarden');
|
||||||
|
|
||||||
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
||||||
const image = getServiceImage(type);
|
const image = getServiceImage(type);
|
||||||
@ -43,6 +46,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
networks: [network],
|
networks: [network],
|
||||||
volumes: [config.volume],
|
volumes: [config.volume],
|
||||||
restart: 'always',
|
restart: 'always',
|
||||||
|
...(exposePort ? { ports: [`${exposePort}:${port}`] } : {}),
|
||||||
labels: makeLabelForServices('vaultWarden'),
|
labels: makeLabelForServices('vaultWarden'),
|
||||||
deploy: {
|
deploy: {
|
||||||
restart_policy: {
|
restart_policy: {
|
||||||
|
@ -9,11 +9,12 @@ export const post: RequestHandler = async (event) => {
|
|||||||
|
|
||||||
const { id } = event.params;
|
const { id } = event.params;
|
||||||
|
|
||||||
let { name, fqdn } = await event.request.json();
|
let { name, fqdn, exposePort } = await event.request.json();
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await db.updateService({ id, fqdn, name });
|
await db.updateService({ id, fqdn, name, exposePort });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
|
@ -6,6 +6,7 @@ import type { RequestHandler } from '@sveltejs/kit';
|
|||||||
import { ErrorHandler, getServiceImage } from '$lib/database';
|
import { ErrorHandler, getServiceImage } from '$lib/database';
|
||||||
import { makeLabelForServices } from '$lib/buildPacks/common';
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -22,11 +23,13 @@ export const post: RequestHandler = async (event) => {
|
|||||||
destinationDocker,
|
destinationDocker,
|
||||||
serviceSecret,
|
serviceSecret,
|
||||||
persistentStorage,
|
persistentStorage,
|
||||||
|
exposePort,
|
||||||
vscodeserver: { password }
|
vscodeserver: { password }
|
||||||
} = service;
|
} = service;
|
||||||
|
|
||||||
const network = destinationDockerId && destinationDocker.network;
|
const network = destinationDockerId && destinationDocker.network;
|
||||||
const host = getEngine(destinationDocker.engine);
|
const host = getEngine(destinationDocker.engine);
|
||||||
|
const port = getServiceMainPort('vscodeserver');
|
||||||
|
|
||||||
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
||||||
const image = getServiceImage(type);
|
const image = getServiceImage(type);
|
||||||
@ -75,6 +78,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
networks: [network],
|
networks: [network],
|
||||||
volumes: [config.volume, ...volumes],
|
volumes: [config.volume, ...volumes],
|
||||||
restart: 'always',
|
restart: 'always',
|
||||||
|
...(exposePort ? { ports: [`${port}:${exposePort}`] } : {}),
|
||||||
labels: makeLabelForServices('vscodeServer'),
|
labels: makeLabelForServices('vscodeServer'),
|
||||||
deploy: {
|
deploy: {
|
||||||
restart_policy: {
|
restart_policy: {
|
||||||
|
@ -11,12 +11,14 @@ export const post: RequestHandler = async (event) => {
|
|||||||
let {
|
let {
|
||||||
name,
|
name,
|
||||||
fqdn,
|
fqdn,
|
||||||
|
exposePort,
|
||||||
wordpress: { extraConfig, mysqlDatabase }
|
wordpress: { extraConfig, mysqlDatabase }
|
||||||
} = await event.request.json();
|
} = await event.request.json();
|
||||||
if (fqdn) fqdn = fqdn.toLowerCase();
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
||||||
|
if (exposePort) exposePort = Number(exposePort);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await db.updateWordpress({ id, fqdn, name, extraConfig, mysqlDatabase });
|
await db.updateWordpress({ id, fqdn, name, extraConfig, mysqlDatabase, exposePort });
|
||||||
return { status: 201 };
|
return { status: 201 };
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return ErrorHandler(error);
|
return ErrorHandler(error);
|
||||||
|
@ -6,6 +6,7 @@ import type { RequestHandler } from '@sveltejs/kit';
|
|||||||
import { ErrorHandler, getServiceImage } from '$lib/database';
|
import { ErrorHandler, getServiceImage } from '$lib/database';
|
||||||
import { makeLabelForServices } from '$lib/buildPacks/common';
|
import { makeLabelForServices } from '$lib/buildPacks/common';
|
||||||
import type { ComposeFile } from '$lib/types/composeFile';
|
import type { ComposeFile } from '$lib/types/composeFile';
|
||||||
|
import { getServiceMainPort } from '$lib/components/common';
|
||||||
|
|
||||||
export const post: RequestHandler = async (event) => {
|
export const post: RequestHandler = async (event) => {
|
||||||
const { teamId, status, body } = await getUserDetails(event);
|
const { teamId, status, body } = await getUserDetails(event);
|
||||||
@ -22,6 +23,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
destinationDockerId,
|
destinationDockerId,
|
||||||
serviceSecret,
|
serviceSecret,
|
||||||
destinationDocker,
|
destinationDocker,
|
||||||
|
exposePort,
|
||||||
wordpress: {
|
wordpress: {
|
||||||
mysqlDatabase,
|
mysqlDatabase,
|
||||||
mysqlUser,
|
mysqlUser,
|
||||||
@ -35,6 +37,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
const network = destinationDockerId && destinationDocker.network;
|
const network = destinationDockerId && destinationDocker.network;
|
||||||
const host = getEngine(destinationDocker.engine);
|
const host = getEngine(destinationDocker.engine);
|
||||||
const image = getServiceImage(type);
|
const image = getServiceImage(type);
|
||||||
|
const port = getServiceMainPort('wordpress');
|
||||||
|
|
||||||
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
const { workdir } = await createDirectories({ repository: type, buildId: id });
|
||||||
const config = {
|
const config = {
|
||||||
@ -76,6 +79,7 @@ export const post: RequestHandler = async (event) => {
|
|||||||
volumes: [config.wordpress.volume],
|
volumes: [config.wordpress.volume],
|
||||||
networks: [network],
|
networks: [network],
|
||||||
restart: 'always',
|
restart: 'always',
|
||||||
|
...(exposePort ? { ports: [`${port}:${port}`] } : {}),
|
||||||
depends_on: [`${id}-mysql`],
|
depends_on: [`${id}-mysql`],
|
||||||
labels: makeLabelForServices('wordpress'),
|
labels: makeLabelForServices('wordpress'),
|
||||||
deploy: {
|
deploy: {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user