mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-07-16 03:15:22 +02:00
Merge pull request #4823 from Dokploy/fix/compose-volume-suffix-access-mode
fix(compose): preserve named-volume access mode when adding suffix
This commit is contained in:
@@ -42,6 +42,39 @@ test("Add suffix to volumes declared directly in services", () => {
|
||||
);
|
||||
});
|
||||
|
||||
const composeFileAccessMode = `
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
web:
|
||||
image: nginx:alpine
|
||||
volumes:
|
||||
- web_config:/etc/nginx/conf.d:ro
|
||||
- certs/sub:/etc/certs:Z
|
||||
`;
|
||||
|
||||
test("Add suffix to volumes preserves access mode (:ro, :z, :Z)", () => {
|
||||
const composeData = parse(composeFileAccessMode) as ComposeSpecification;
|
||||
|
||||
const suffix = generateRandomHash();
|
||||
|
||||
if (!composeData.services) {
|
||||
return;
|
||||
}
|
||||
|
||||
const updatedComposeData = addSuffixToVolumesInServices(
|
||||
composeData.services,
|
||||
suffix,
|
||||
);
|
||||
|
||||
expect(updatedComposeData.web?.volumes).toContain(
|
||||
`web_config-${suffix}:/etc/nginx/conf.d:ro`,
|
||||
);
|
||||
expect(updatedComposeData.web?.volumes).toContain(
|
||||
`certs-${suffix}/sub:/etc/certs:Z`,
|
||||
);
|
||||
});
|
||||
|
||||
const composeFileTypeVolume = `
|
||||
version: "3.8"
|
||||
|
||||
|
||||
@@ -26,11 +26,14 @@ export const addSuffixToVolumesInServices = (
|
||||
if (_.has(newServiceConfig, "volumes")) {
|
||||
newServiceConfig.volumes = _.map(newServiceConfig.volumes, (volume) => {
|
||||
if (_.isString(volume)) {
|
||||
const [volumeName, path] = volume.split(":");
|
||||
// remainder is the container path plus optional access mode (:ro, :z, :Z)
|
||||
const [volumeName, ...pathAndMode] = volume.split(":");
|
||||
const remainder = pathAndMode.join(":");
|
||||
|
||||
// skip bind mounts and variables (e.g. $PWD)
|
||||
if (
|
||||
!volumeName ||
|
||||
!remainder ||
|
||||
volumeName.startsWith(".") ||
|
||||
volumeName.startsWith("/") ||
|
||||
volumeName.startsWith("$")
|
||||
@@ -43,10 +46,10 @@ export const addSuffixToVolumesInServices = (
|
||||
if (parts.length > 1) {
|
||||
const baseName = parts[0];
|
||||
const rest = parts.slice(1).join("/");
|
||||
return `${baseName}-${suffix}/${rest}:${path}`;
|
||||
return `${baseName}-${suffix}/${rest}:${remainder}`;
|
||||
}
|
||||
|
||||
return `${volumeName}-${suffix}:${path}`;
|
||||
return `${volumeName}-${suffix}:${remainder}`;
|
||||
}
|
||||
if (_.isObject(volume) && volume.type === "volume" && volume.source) {
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user