fix: plausible analytics things

This commit is contained in:
Andras Bacsai 2022-11-07 14:59:39 +01:00
parent b5756cb14f
commit fda8823050
4 changed files with 60 additions and 14 deletions

View File

@ -88,15 +88,18 @@ export async function migrateServicesToNewTemplate() {
}
}
}
for (const service of Object.keys(template.services)) {
if (template.services[service].volumes) {
for (const volume of template.services[service].volumes) {
for (const s of Object.keys(template.services)) {
if (service.type === 'plausibleanalytics') {
continue;
}
if (template.services[s].volumes) {
for (const volume of template.services[s].volumes) {
const [volumeName, path] = volume.split(':')
if (!volumeName.startsWith('/')) {
const found = await prisma.servicePersistentStorage.findFirst({ where: { volumeName, serviceId: id } })
if (!found) {
await prisma.servicePersistentStorage.create({
data: { volumeName, path, containerId: service, predefined: true, service: { connect: { id } } }
data: { volumeName, path, containerId: s, predefined: true, service: { connect: { id } } }
});
}
}
@ -464,9 +467,13 @@ async function createVolumes(service: any, template: any) {
for (const s of Object.keys(template.services)) {
if (template.services[s].volumes && template.services[s].volumes.length > 0) {
for (const volume of template.services[s].volumes) {
const volumeName = volume.split(':')[0]
let volumeName = volume.split(':')[0]
const volumePath = volume.split(':')[1]
const volumeService = s
let volumeService = s
if (service.type === 'plausibleanalytics' && service.plausibleAnalytics?.id) {
let volumeId = volumeName.split('-')[0]
volumeName = volumeName.replace(volumeId, service.plausibleAnalytics.id)
}
volumes.push(`${volumeName}@@@${volumePath}@@@${volumeService}`)
}
}

View File

@ -1448,7 +1448,8 @@ export async function getServiceFromDB({
persistentStorage: true,
serviceSecret: true,
serviceSetting: true,
wordpress: true
wordpress: true,
plausibleAnalytics: true,
}
});
if (!body) {

View File

@ -78,12 +78,28 @@ export async function startService(request: FastifyRequest<ServiceStartStop>, fa
}
}
const customVolumes = await prisma.servicePersistentStorage.findMany({ where: { serviceId: id } })
let volumes = arm ? template.services[s].volumesArm : template.services[s].volumes
let volumes = new Set()
if (arm) {
template.services[s]?.volumesArm && template.services[s].volumesArm.length > 0 && template.services[s].volumesArm.forEach(v => volumes.add(v))
} else {
template.services[s]?.volumes && template.services[s].volumes.length > 0 && template.services[s].volumes.forEach(v => volumes.add(v))
}
// Workaround: old plausible analytics service wrong volume id name
if (service.type === 'plausibleanalytics' && service.plausibleAnalytics?.id) {
let temp = Array.from(volumes)
temp.forEach(a => {
const t = a.replace(service.id, service.plausibleAnalytics.id)
volumes.delete(a)
volumes.add(t)
})
}
if (customVolumes.length > 0) {
for (const customVolume of customVolumes) {
const { volumeName, path, containerId } = customVolume
if (volumes && volumes.length > 0 && !volumes.includes(`${volumeName}:${path}`) && containerId === service) {
volumes.push(`${volumeName}:${path}`)
if (volumes && volumes.size > 0 && !volumes.has(`${volumeName}:${path}`) && containerId === service) {
volumes.add(`${volumeName}:${path}`)
}
}
}
@ -96,7 +112,7 @@ export async function startService(request: FastifyRequest<ServiceStartStop>, fa
image: arm ? template.services[s].imageArm : template.services[s].image,
expose: template.services[s].ports,
...(exposePort ? { ports: [`${exposePort}:${exposePort}`] } : {}),
volumes,
volumes: Array.from(volumes),
environment: newEnvironments,
depends_on: template.services[s]?.depends_on,
ulimits: template.services[s]?.ulimits,
@ -141,6 +157,8 @@ export async function startService(request: FastifyRequest<ServiceStartStop>, fa
const composeFileDestination = `${workdir}/docker-compose.yaml`;
await fs.writeFile(composeFileDestination, yaml.dump(composeFile));
await startServiceContainers(fastify, id, teamId, destinationDocker.id, composeFileDestination)
// Workaround: Stop old minio proxies
if (service.type === 'minio') {
try {
await executeDockerCmd({

View File

@ -102,7 +102,7 @@
async function restartService() {
const sure = confirm('Are you sure you want to restart this service?');
if (sure) {
await stopService();
await stopService(true);
await startService();
}
}
@ -120,7 +120,27 @@
loading.refreshTemplates = false;
}
}
async function stopService() {
async function stopService(skip = false) {
if (skip) {
$status.service.initialLoading = true;
$status.service.loading = true;
try {
await post(`/services/${service.id}/stop`, {});
if (service.type.startsWith('wordpress')) {
await post(`/services/${id}/wordpress/ftp`, {
ftpEnabled: false
});
service.wordpress?.ftpEnabled && window.location.reload();
}
} catch (error) {
return errorNotification(error);
} finally {
$status.service.initialLoading = false;
$status.service.loading = false;
await getStatus();
}
return;
}
const sure = confirm($t('database.confirm_stop', { name: service.name }));
if (sure) {
$status.service.initialLoading = true;
@ -319,7 +339,7 @@
Force Redeploy
</button>
<button
on:click={stopService}
on:click={() => stopService(false)}
type="submit"
disabled={!$isDeploymentEnabled}
class="btn btn-sm gap-2"