Skip to content

Commit 2713368

Browse files
committed
chore: Add missing depends_on
1 parent e7c5989 commit 2713368

File tree

2 files changed

+31
-15
lines changed

2 files changed

+31
-15
lines changed

src/data/composeTemplates.js

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,14 @@ const generateEditorEnv = (config, deploymentType) => {
8080
addEnvVar(envVars, 'M3U_PROXY_PORT', config.M3U_PROXY_PORT || '38085');
8181
}
8282

83-
addEnvVar(envVars, 'M3U_PROXY_TOKEN', config.M3U_PROXY_TOKEN);
83+
// Proxy token - use .env substitution so the value comes from .env file
84+
// For embedded proxy, token is optional (auto-generated at boot if not set)
85+
// For external proxy, token must always be defined
86+
if (config.M3U_PROXY_TOKEN) {
87+
envVars.push(` - M3U_PROXY_TOKEN=\${M3U_PROXY_TOKEN:-${config.M3U_PROXY_TOKEN}}`);
88+
} else if (!useEmbeddedProxy) {
89+
envVars.push(` - M3U_PROXY_TOKEN=\${M3U_PROXY_TOKEN}`);
90+
}
8491
addEnvVar(envVars, 'M3U_PROXY_LOG_LEVEL', config.M3U_PROXY_LOG_LEVEL, config.M3U_PROXY_LOG_LEVEL);
8592

8693
// Redis settings
@@ -232,16 +239,18 @@ const generateProxyService = (config, useVpnNetwork = false) => {
232239
service += `
233240
- m3u-redis`;
234241
}
235-
// Note: No dependency on m3u-editor for embedded Redis to avoid circular dependency
236-
// The proxy can connect to editor's Redis via hostname without depends_on
237242
} else {
243+
// When redis is external, proxy depends on redis
244+
// When redis is embedded in editor, proxy depends on editor (connects to editor's redis)
238245
if (redisExternal) {
239246
service += `
240247
depends_on:
241248
- m3u-redis`;
249+
} else {
250+
service += `
251+
depends_on:
252+
- m3u-editor`;
242253
}
243-
// Note: No dependency on m3u-editor for embedded Redis to avoid circular dependency
244-
// The proxy can connect to editor's Redis via hostname without depends_on
245254
service += `
246255
networks:
247256
- m3u-network`;
@@ -284,9 +293,10 @@ export const generateModularCompose = (config) => {
284293
const imageTag = getImageTag(config);
285294

286295
// Build depends_on for editor
287-
// Note: Editor only depends on external Redis (if used)
288-
// Proxy is not a startup dependency - it's a runtime service
296+
// When redis is external: editor depends on proxy (if external) + redis
297+
// When redis is embedded: editor has no depends_on (proxy depends on editor instead)
289298
const editorDependsOn = [];
299+
if (proxyExternal && redisExternal) editorDependsOn.push('m3u-proxy');
290300
if (redisExternal) editorDependsOn.push('m3u-redis');
291301

292302
let compose = `# Docker Compose - Modular Deployment
@@ -413,9 +423,10 @@ export const generateVpnCompose = (config) => {
413423
}
414424

415425
// Build depends_on for editor
416-
// Note: Editor only depends on external Redis (if used) and gluetun
417-
// Proxy is not a startup dependency - it's a runtime service
426+
// Editor always depends on gluetun (VPN network)
427+
// When redis is external: also depends on proxy (if external) + redis
418428
const editorDependsOn = [];
429+
if (proxyExternal && redisExternal) editorDependsOn.push('m3u-proxy');
419430
if (redisExternal) editorDependsOn.push('m3u-redis');
420431

421432
let compose = `# Docker Compose - VPN Deployment (Gluetun)
@@ -514,9 +525,9 @@ export const generateExternalNginxCompose = (config) => {
514525
const imageTag = getImageTag(config);
515526

516527
// Build depends_on for editor
517-
// Note: Editor only depends on external Redis (if used)
518-
// Proxy is not a startup dependency - it's a runtime service
528+
// When redis is external: editor depends on proxy (if external) + redis
519529
const editorDependsOn = [];
530+
if (proxyExternal && redisExternal) editorDependsOn.push('m3u-proxy');
520531
if (redisExternal) editorDependsOn.push('m3u-redis');
521532

522533
let compose = `# Docker Compose - External Nginx Deployment
@@ -568,7 +579,8 @@ ${editorDependsOn.map(d => ` - ${d}`).join('\n')}`;
568579
- ${config.CONFIG_PATH || './data'}:/var/www/html:ro
569580
restart: unless-stopped
570581
depends_on:
571-
- m3u-editor
582+
- m3u-editor${proxyExternal ? `
583+
- m3u-proxy` : ''}
572584
networks:
573585
- m3u-network
574586
@@ -635,9 +647,9 @@ export const generateExternalCaddyCompose = (config) => {
635647
const domain = config.APP_URL?.replace(/^https?:\/\//, '').replace(/\/$/, '') || 'localhost';
636648

637649
// Build depends_on for editor
638-
// Note: Editor only depends on external Redis (if used)
639-
// Proxy is not a startup dependency - it's a runtime service
650+
// When redis is external: editor depends on proxy (if external) + redis
640651
const editorDependsOn = [];
652+
if (proxyExternal && redisExternal) editorDependsOn.push('m3u-proxy');
641653
if (redisExternal) editorDependsOn.push('m3u-redis');
642654

643655
let compose = `# Docker Compose - External Caddy Deployment
@@ -691,7 +703,8 @@ ${editorDependsOn.map(d => ` - ${d}`).join('\n')}`;
691703
- ${config.CONFIG_PATH || './data'}:/var/www/html:ro
692704
restart: unless-stopped
693705
depends_on:
694-
- m3u-editor
706+
- m3u-editor${proxyExternal ? `
707+
- m3u-proxy` : ''}
695708
networks:
696709
- m3u-network
697710

src/data/composeWizardConfig.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,5 +652,8 @@ export const getDefaultValues = (deploymentType) => {
652652
defaults.REDIS_HOST = 'm3u-redis';
653653
}
654654

655+
// Auto-generate a proxy token on page load
656+
defaults.M3U_PROXY_TOKEN = generateToken();
657+
655658
return defaults;
656659
};

0 commit comments

Comments
 (0)