Skip to content

Commit 11730a5

Browse files
committed
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) ...`
1 parent c1985db commit 11730a5

File tree

16 files changed

+65
-33
lines changed

16 files changed

+65
-33
lines changed

Diff for: swift-ci/main/amazon-linux/2/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ FROM amazonlinux:2
22

33
RUN yum install shadow-utils -y
44

5-
RUN groupadd -g 998 build-user && \
6-
useradd -m -r -u 42 -g build-user build-user
5+
ARG BUILD_USER_ID=998
6+
7+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
8+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
79

810
# The build needs a package from the EPEL repo so that needs to be enabled.
911
RUN amazon-linux-extras install epel -y

Diff for: swift-ci/main/amazon-linux/2023/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ FROM amazonlinux:2023
22

33
RUN yum install shadow-utils -y
44

5-
RUN groupadd -g 998 build-user && \
6-
useradd -m -r -u 42 -g build-user build-user
5+
ARG BUILD_USER_ID=998
6+
7+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
8+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
79

810
RUN yum -y group install "development tools"
911
RUN yum -y install \

Diff for: swift-ci/main/centos/7/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ FROM centos:7
22

33
RUN yum install shadow-utils.x86_64 -y
44

5-
RUN groupadd -g 998 build-user && \
6-
useradd -m -r -u 42 -g build-user build-user
5+
ARG BUILD_USER_ID=998
6+
7+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
8+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
79

810
RUN yum install -y epel-release centos-release-scl
911

Diff for: swift-ci/main/debian/10/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM debian:10
22

3-
RUN groupadd -g 998 build-user && \
4-
useradd -m -r -u 998 -g build-user build-user
3+
ARG BUILD_USER_ID=998
4+
5+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
6+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
57

68
ENV DEBIAN_FRONTEND="noninteractive"
79

Diff for: swift-ci/main/debian/11/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM debian:11
22

3-
RUN groupadd -g 998 build-user && \
4-
useradd -m -r -u 998 -g build-user build-user
3+
ARG BUILD_USER_ID=998
4+
5+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
6+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
57

68
ENV DEBIAN_FRONTEND="noninteractive"
79

Diff for: swift-ci/main/debian/12/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM debian:12
22

3-
RUN groupadd -g 998 build-user && \
4-
useradd -m -r -u 998 -g build-user build-user
3+
ARG BUILD_USER_ID=998
4+
5+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
6+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
57

68
ENV DEBIAN_FRONTEND="noninteractive"
79

Diff for: swift-ci/main/debian/9/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM debian:9
22

3-
RUN groupadd -g 998 build-user && \
4-
useradd -m -r -u 998 -g build-user build-user
3+
ARG BUILD_USER_ID=998
4+
5+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
6+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
57

68
ENV DEBIAN_FRONTEND="noninteractive"
79

Diff for: swift-ci/main/fedora/39/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM fedora:39
22

3-
RUN groupadd -g 998 build-user && \
4-
useradd -m -r -u 998 -g build-user build-user
3+
ARG BUILD_USER_ID=998
4+
5+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
6+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
57

68
RUN yum install -y \
79
libcurl-devel \

Diff for: swift-ci/main/fedora/40/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM fedora:40
22

3-
RUN groupadd -g 998 build-user && \
4-
useradd -m -r -u 998 -g build-user build-user
3+
ARG BUILD_USER_ID=998
4+
5+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
6+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
57

68
RUN yum install -y \
79
libcurl-devel \

Diff for: swift-ci/main/ubuntu/18.04/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM ubuntu:18.04
22

3-
RUN groupadd -g 998 build-user && \
4-
useradd -m -r -u 998 -g build-user build-user
3+
ARG BUILD_USER_ID=998
4+
5+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
6+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
57

68
ENV DEBIAN_FRONTEND="noninteractive"
79

Diff for: swift-ci/main/ubuntu/20.04/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM ubuntu:20.04
22

3-
RUN groupadd -g 998 build-user && \
4-
useradd -m -r -u 998 -g build-user build-user
3+
ARG BUILD_USER_ID=998
4+
5+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
6+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
57

68
ENV DEBIAN_FRONTEND="noninteractive"
79

Diff for: swift-ci/main/ubuntu/22.04/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM ubuntu:22.04
22

3-
RUN groupadd -g 998 build-user && \
4-
useradd -m -r -u 998 -g build-user build-user
3+
ARG BUILD_USER_ID=998
4+
5+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
6+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
57

68
ENV DEBIAN_FRONTEND="noninteractive"
79

Diff for: swift-ci/main/ubuntu/23.10/Dockerfile

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM ubuntu:23.10
22

3-
RUN groupadd -g 998 build-user && \
4-
useradd -m -r -u 998 -g build-user build-user
3+
ARG BUILD_USER_ID=998
4+
5+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
6+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
57

68
ENV DEBIAN_FRONTEND="noninteractive"
79

@@ -82,4 +84,4 @@ ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
8284

8385
USER build-user
8486

85-
WORKDIR /home/build-user
87+
WORKDIR /home/build-user

Diff for: swift-ci/main/ubuntu/24.04/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
FROM ubuntu:24.04
22

3-
RUN groupadd -g 998 build-user && \
4-
useradd -m -r -u 998 -g build-user build-user
3+
ARG BUILD_USER_ID=998
4+
5+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
6+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
57

68
ENV DEBIAN_FRONTEND="noninteractive"
79

Diff for: swift-ci/sdks/static-linux/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,10 @@ RUN chmod ugo+x /scripts/*
8888
COPY resources /resources
8989

9090
# Create a user
91-
RUN groupadd -g 998 build-user && \
92-
useradd -m -r -u 998 -g build-user build-user
91+
ARG BUILD_USER_ID=998
92+
93+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
94+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
9395

9496
USER build-user
9597

Diff for: swift-ci/swift-docc-render/Dockerfile

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ FROM node:14.17.4
22

33
ARG SWIFT_DOCC_RENDER_BRANCH=main
44

5-
RUN groupadd -g 998 build-user && \
6-
useradd -m -r -u 998 -g build-user build-user
5+
ARG BUILD_USER_ID=998
6+
7+
RUN groupadd -g ${BUILD_USER_ID} build-user && \
8+
useradd -m -r -u ${BUILD_USER_ID} -g build-user build-user
79

810
USER build-user
911

0 commit comments

Comments
 (0)