Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
RunOnFluxBot committed Jan 30, 2025
1 parent d25e67f commit 7093997
Showing 1 changed file with 19 additions and 5 deletions.
24 changes: 19 additions & 5 deletions services/dockerService.js
Original file line number Diff line number Diff line change
Expand Up @@ -526,17 +526,30 @@ async function obtainPayloadFromStorage(url, appName) {
}
}

/**
* Retrieves the IP address of a running Docker container.
*
* @param {string} containerName - The name of the container.
* @returns {Promise<string|null>} - The container's IP address, or null if not found.
* @throws {Error} - If the container has no network or IP address.
*/
const getContainerIP = async (containerName) => {
try {
const container = await docker.getContainer(containerName).inspect();
const networks = Object.keys(container.NetworkSettings.Networks);

if (networks.length === 0) {
if (!Array.isArray(networks) || networks.length === 0) {
throw new Error('No networks found for container');
}

const networkName = networks[0]; // Use the first (and only) network
return container.NetworkSettings.Networks[networkName].IPAddress;
const networkName = networks[0]; // Automatically selects the first network
const ipAddressOfContainer = container.NetworkSettings.Networks[networkName].IPAddress ?? null;

if (!ipAddressOfContainer) {
throw new Error('No IPAddress found for container');
}

return ipAddressOfContainer;
} catch (error) {
log.error(`Failed to retrieve IP for ${containerName}: ${error.message}`);
return null;
Expand Down Expand Up @@ -666,6 +679,7 @@ async function appDockerCreate(appSpecifications, appName, isComponent, fullAppS
});

const isSender = envParams?.some((env) => env.startsWith('LOG=SEND'));
const isCollector = envParams?.some((env) => env.startsWith('LOG=COLLECT'));

let syslogTarget = null;
let syslogIP = null;
Expand All @@ -674,11 +688,11 @@ async function appDockerCreate(appSpecifications, appName, isComponent, fullAppS
syslogTarget = fullAppSpecs.compose.find((app) => app.environmentParameters?.some((env) => env.startsWith('LOG=COLLECT')))?.name;
}

if (syslogTarget) {
if (syslogTarget && !isCollector) {
syslogIP = await getContainerIP(`flux${syslogTarget}_${appName}`);
}

log.info(`isSender=${isSender}, syslogTarget=${syslogTarget}, syslogIP=${syslogIP}`);
log.info(`isSender=${isSender}, syslogTarget=${syslogTarget}, syslogCollectorIP=${syslogIP}`);

const logConfig = isSender && syslogTarget && syslogIP
? {
Expand Down

0 comments on commit 7093997

Please sign in to comment.