diff --git a/changelog.md b/changelog.md index f53fc4c..0ea03da 100644 --- a/changelog.md +++ b/changelog.md @@ -6,6 +6,7 @@ - Constellation is now paid - Improve DNS Challenge with smarter resolution for faster and more reliable results (especially when using local nameservers) - Fix issues where it was impossible to login with insecure local IPs + - Better suppoer for container/service network_mode when importing compose - Default networks to 16 Ips instead of 8 - Further improving the docker-compose import to mimic naming and hostnaming convention - Added hostname stickiness to compose network namespaces diff --git a/client/src/pages/servapps/containers/docker-compose.jsx b/client/src/pages/servapps/containers/docker-compose.jsx index 748dd0e..e8cd473 100644 --- a/client/src/pages/servapps/containers/docker-compose.jsx +++ b/client/src/pages/servapps/containers/docker-compose.jsx @@ -307,14 +307,27 @@ const convertDockerCompose = (config, serviceName, dockerCompose, setYmlError) = if (doc.services[key].network_mode) { if (doc.services[key].network_mode && doc.services[key].network_mode.startsWith('service:')) { let service = doc.services[key].network_mode.split(':')[1]; + let found = false; Object.keys(doc.services).forEach((potentialMatch) => { if (doc.services[potentialMatch].old_key === service) { - doc.services[key].network_mode = 'service:' + (doc.services[potentialMatch].container_name || potentialMatch); + found = true; + doc.services[key].network_mode = 'container:' + (doc.services[potentialMatch].container_name || potentialMatch); } }); + if (!found) { + throw new Error('Service ' + service + ' not found for network_mode in ' + key); + } } } }); + + // for each network mode that are container, add a label + Object.keys(doc.services).forEach((key) => { + if (doc.services[key].network_mode && doc.services[key].network_mode.startsWith('container:')) { + doc.services[key].labels = doc.services[key].labels || {}; + doc.services[key].labels['cosmos-force-network-mode'] = doc.services[key].network_mode; + } + }); // clean up old-keys Object.keys(doc.services).forEach((key) => { diff --git a/package.json b/package.json index d025170..e8b8275 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cosmos-server", - "version": "0.16.0-unstable42", + "version": "0.16.0-unstable43", "description": "", "main": "test-server.js", "bugs": {