MCPcopy Create free account
hub / github.com/Openpanel-dev/openpanel / removeServiceFromDockerCompose

Function removeServiceFromDockerCompose

self-hosting/quiz.ts:89–139  ·  view source on GitHub ↗
(serviceName: string)

Source from the content-addressed store, hash-verified

87}
88
89function removeServiceFromDockerCompose(serviceName: string) {
90 const dockerComposePath = path.resolve(__dirname, 'docker-compose.yml');
91 const dockerComposeContent = fs.readFileSync(dockerComposePath, 'utf-8');
92
93 // Parse the YAML file
94 const dockerCompose = yaml.load(dockerComposeContent) as DockerComposeFile;
95
96 // Remove the service
97 if (dockerCompose.services[serviceName]) {
98 delete dockerCompose.services[serviceName];
99 console.log(`Service '${serviceName}' has been removed.`);
100 } else {
101 console.log(`Service '${serviceName}' not found.`);
102 // return;
103 }
104
105 // filter depends_on
106 Object.keys(dockerCompose.services).forEach((service) => {
107 const serviceConfig = dockerCompose.services[service];
108 if (serviceConfig?.depends_on) {
109 if (Array.isArray(serviceConfig.depends_on)) {
110 // Handle legacy array format
111 serviceConfig.depends_on = serviceConfig.depends_on.filter(
112 (dep) => dep !== serviceName,
113 );
114 } else {
115 // Handle new object format
116 if (serviceConfig.depends_on[serviceName]) {
117 delete serviceConfig.depends_on[serviceName];
118 }
119 }
120 }
121 });
122
123 // filter volumes
124 Object.keys(dockerCompose.volumes ?? {}).forEach((volume) => {
125 if (dockerCompose.volumes && volume.startsWith(serviceName)) {
126 delete dockerCompose.volumes[volume];
127 }
128 });
129
130 if (Object.keys(dockerCompose.volumes ?? {}).length === 0) {
131 delete dockerCompose.volumes;
132 }
133
134 // Convert the object back to YAML
135 const newYaml = yaml.dump(dockerCompose, {
136 lineWidth: -1,
137 });
138 fs.writeFileSync(dockerComposePath, newYaml);
139}
140
141function writeEnvFile(envs: EnvVars) {
142 const envTemplatePath = path.resolve(__dirname, '.env.template');

Callers 1

initiateOnboardingFunction · 0.85

Calls 1

logMethod · 0.45

Tested by

no test coverage detected