From 6721040918d95581d0a5b5f3de29f7f6a804d826 Mon Sep 17 00:00:00 2001 From: Evan Wilde Date: Mon, 11 Nov 2024 12:59:45 -0800 Subject: [PATCH] Configurable user IDs When working with these containers to debug issues locally, it's sometimes useful to have the source directory live on the host, while building in the container. In order for permissions to line up, the user ID numbers need to match or the build-user may not be able to create the necessary directories. This patch allows setting the build-user user ID so that the permissions line up and the user in the container and host can manipulate the files. Override the build user ID with the current user's ID is done with the following command to ensure that the permissions on any volumes are kept in sync is the following: `docker build --build-arg BUILD_USER_ID=$(id -u) ...` --- swift-ci/main/amazon-linux/2/Dockerfile | 6 ++++-- swift-ci/main/amazon-linux/2023/Dockerfile | 6 ++++-- swift-ci/main/debian/10/Dockerfile | 6 ++++-- swift-ci/main/debian/11/Dockerfile | 6 ++++-- swift-ci/main/debian/12/Dockerfile | 6 ++++-- swift-ci/main/debian/9/Dockerfile | 6 ++++-- swift-ci/main/fedora/39/Dockerfile | 6 ++++-- swift-ci/main/fedora/40/Dockerfile | 6 ++++-- swift-ci/main/ubuntu/18.04/Dockerfile | 6 ++++-- swift-ci/main/ubuntu/20.04/Dockerfile | 6 ++++-- swift-ci/main/ubuntu/22.04/Dockerfile | 6 ++++-- swift-ci/main/ubuntu/24.04/Dockerfile | 6 ++++-- swift-ci/sdks/static-linux/Dockerfile | 6 ++++-- swift-ci/swift-docc-render/Dockerfile | 6 ++++-- 14 files changed, 56 insertions(+), 28 deletions(-) diff --git a/swift-ci/main/amazon-linux/2/Dockerfile b/swift-ci/main/amazon-linux/2/Dockerfile index 300b848c..82627daf 100644 --- a/swift-ci/main/amazon-linux/2/Dockerfile +++ b/swift-ci/main/amazon-linux/2/Dockerfile @@ -2,8 +2,10 @@ FROM amazonlinux:2 RUN yum install shadow-utils -y -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 42 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user # The build needs a package from the EPEL repo so that needs to be enabled. RUN amazon-linux-extras install epel -y diff --git a/swift-ci/main/amazon-linux/2023/Dockerfile b/swift-ci/main/amazon-linux/2023/Dockerfile index ce2caea2..2a1274dd 100644 --- a/swift-ci/main/amazon-linux/2023/Dockerfile +++ b/swift-ci/main/amazon-linux/2023/Dockerfile @@ -2,8 +2,10 @@ FROM amazonlinux:2023 RUN yum install shadow-utils -y -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 42 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user RUN yum -y group install "development tools" RUN yum -y install \ diff --git a/swift-ci/main/debian/10/Dockerfile b/swift-ci/main/debian/10/Dockerfile index 7c66bf06..9a2fb37f 100644 --- a/swift-ci/main/debian/10/Dockerfile +++ b/swift-ci/main/debian/10/Dockerfile @@ -1,7 +1,9 @@ FROM debian:10 -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user ENV DEBIAN_FRONTEND="noninteractive" diff --git a/swift-ci/main/debian/11/Dockerfile b/swift-ci/main/debian/11/Dockerfile index 45ef26b8..34d98f44 100644 --- a/swift-ci/main/debian/11/Dockerfile +++ b/swift-ci/main/debian/11/Dockerfile @@ -1,7 +1,9 @@ FROM debian:11 -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user ENV DEBIAN_FRONTEND="noninteractive" diff --git a/swift-ci/main/debian/12/Dockerfile b/swift-ci/main/debian/12/Dockerfile index e2d90888..44e1df2e 100644 --- a/swift-ci/main/debian/12/Dockerfile +++ b/swift-ci/main/debian/12/Dockerfile @@ -1,7 +1,9 @@ FROM debian:12 -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user ENV DEBIAN_FRONTEND="noninteractive" diff --git a/swift-ci/main/debian/9/Dockerfile b/swift-ci/main/debian/9/Dockerfile index 09022bcb..05bd96d2 100644 --- a/swift-ci/main/debian/9/Dockerfile +++ b/swift-ci/main/debian/9/Dockerfile @@ -1,7 +1,9 @@ FROM debian:9 -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user ENV DEBIAN_FRONTEND="noninteractive" diff --git a/swift-ci/main/fedora/39/Dockerfile b/swift-ci/main/fedora/39/Dockerfile index b607302d..6b3d914d 100644 --- a/swift-ci/main/fedora/39/Dockerfile +++ b/swift-ci/main/fedora/39/Dockerfile @@ -1,7 +1,9 @@ FROM fedora:39 -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user RUN yum install -y \ libcurl-devel \ diff --git a/swift-ci/main/fedora/40/Dockerfile b/swift-ci/main/fedora/40/Dockerfile index ab02e85e..ca8afd8c 100644 --- a/swift-ci/main/fedora/40/Dockerfile +++ b/swift-ci/main/fedora/40/Dockerfile @@ -1,7 +1,9 @@ FROM fedora:40 -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user RUN yum install -y \ libcurl-devel \ diff --git a/swift-ci/main/ubuntu/18.04/Dockerfile b/swift-ci/main/ubuntu/18.04/Dockerfile index 72643fb5..ceac488f 100644 --- a/swift-ci/main/ubuntu/18.04/Dockerfile +++ b/swift-ci/main/ubuntu/18.04/Dockerfile @@ -1,7 +1,9 @@ FROM ubuntu:18.04 -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user ENV DEBIAN_FRONTEND="noninteractive" diff --git a/swift-ci/main/ubuntu/20.04/Dockerfile b/swift-ci/main/ubuntu/20.04/Dockerfile index f3500bec..e8c00ccb 100644 --- a/swift-ci/main/ubuntu/20.04/Dockerfile +++ b/swift-ci/main/ubuntu/20.04/Dockerfile @@ -1,7 +1,9 @@ FROM ubuntu:20.04 -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user ENV DEBIAN_FRONTEND="noninteractive" diff --git a/swift-ci/main/ubuntu/22.04/Dockerfile b/swift-ci/main/ubuntu/22.04/Dockerfile index 0601e50d..73333160 100644 --- a/swift-ci/main/ubuntu/22.04/Dockerfile +++ b/swift-ci/main/ubuntu/22.04/Dockerfile @@ -1,7 +1,9 @@ FROM ubuntu:22.04 -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user ENV DEBIAN_FRONTEND="noninteractive" diff --git a/swift-ci/main/ubuntu/24.04/Dockerfile b/swift-ci/main/ubuntu/24.04/Dockerfile index 21459b25..437d3e78 100644 --- a/swift-ci/main/ubuntu/24.04/Dockerfile +++ b/swift-ci/main/ubuntu/24.04/Dockerfile @@ -1,7 +1,9 @@ FROM ubuntu:24.04 -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user ENV DEBIAN_FRONTEND="noninteractive" diff --git a/swift-ci/sdks/static-linux/Dockerfile b/swift-ci/sdks/static-linux/Dockerfile index 5253602b..1987c715 100644 --- a/swift-ci/sdks/static-linux/Dockerfile +++ b/swift-ci/sdks/static-linux/Dockerfile @@ -88,8 +88,10 @@ RUN chmod ugo+x /scripts/* COPY resources /resources # Create a user -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user USER build-user diff --git a/swift-ci/swift-docc-render/Dockerfile b/swift-ci/swift-docc-render/Dockerfile index 6ed64136..c52b8aed 100644 --- a/swift-ci/swift-docc-render/Dockerfile +++ b/swift-ci/swift-docc-render/Dockerfile @@ -2,8 +2,10 @@ FROM node:14.17.4 ARG SWIFT_DOCC_RENDER_BRANCH=main -RUN groupadd -g 998 build-user && \ - useradd -m -r -u 998 -g build-user build-user +ARG BUILD_USER_ID=998 + +RUN groupadd -g ${BUILD_USER_ID} build-user && \ + useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user USER build-user