From 9cd82df3e7059c931a7a7b9e2b4ca3e1359b4eb5 Mon Sep 17 00:00:00 2001 From: Zusier Date: Wed, 16 Mar 2022 00:17:03 +0000 Subject: [PATCH 1/6] clarify uid/git in compose --- compose.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/compose.yaml b/compose.yaml index 5ecfe03..d493be2 100644 --- a/compose.yaml +++ b/compose.yaml @@ -9,6 +9,7 @@ services: command: npm start container_name: ass-docker restart: unless-stopped + user: 1000:1000 ports: - "40115:40115" volumes: From 8b0bfd6a588c57cc3710b10d99e7f5f6c99538fa Mon Sep 17 00:00:00 2001 From: Zusier Date: Wed, 16 Mar 2022 00:17:37 +0000 Subject: [PATCH 2/6] update version --- compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose.yaml b/compose.yaml index d493be2..8a679de 100644 --- a/compose.yaml +++ b/compose.yaml @@ -1,4 +1,4 @@ -# ass Docker compose.yaml v0.1.1 +# ass Docker compose.yaml v0.1.2 # authors: # - tycrek (https://tycrek.com/) # - Zusier (https://github.com/Zusier) From 8560efd2eb5396f1ebd7a032e830828379ef058c Mon Sep 17 00:00:00 2001 From: Zusier Date: Wed, 16 Mar 2022 00:20:27 +0000 Subject: [PATCH 3/6] Run as rootless user & improve build cache --- Dockerfile | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index ca73b36..87d5e1d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,14 +9,14 @@ FROM node:16.14.0 # Set working directory WORKDIR /opt/ass/ -# Copy directory files (config.json, source files etc.) -COPY . ./ +# create rootless user with uid/gid as 1000 +RUN groupadd -g 1000 -o ass && useradd -m -u 1000 -g 1000 -o -s /bin/bash ass -# Update npm to at least npm 8, -# then install dependencies -RUN npm i -g npm@8 typescript && \ - npm i --save-dev && \ - npm run build +# Set permissions for rootless user +RUN chown -R ass /opt/ass/ && chmod -R 774 /opt/ass/ + +# run container as previously created user +USER ass # Ensure these directories & files exist for compose volumes RUN mkdir -p /opt/ass/uploads/thumbnails/ && \ @@ -25,5 +25,14 @@ RUN mkdir -p /opt/ass/uploads/thumbnails/ && \ touch /opt/ass/auth.json && \ touch /opt/ass/data.json +# Copy directory files (config.json, source files etc.) +COPY . ./ + +# Update npm to at least npm 8, then install dependencies +RUN npm i -g npm@8 typescript && \ + npm i --save-dev && \ + npm run build && \ + chown -R ass /usr/local/bin/npm + # Start ass CMD npm start From f4459b38809086ada05a6e32223d18ba1ed2d532 Mon Sep 17 00:00:00 2001 From: Zusier Date: Wed, 16 Mar 2022 00:22:28 +0000 Subject: [PATCH 4/6] Chown in install script for volumes --- install/docker-linux.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/install/docker-linux.sh b/install/docker-linux.sh index ebb4d9a..2f1b1e7 100755 --- a/install/docker-linux.sh +++ b/install/docker-linux.sh @@ -16,6 +16,10 @@ do fi done +# Ensure proper file permissions for rootless +chown -R 1000:1000 config.json auth.json data.json uploads share +chmod -R 774 config.json data.json uploads share + # Wait for user to confirm echo "Continuing will run docker-compose. Continue? (Press Ctrl+C to abort)" read -n 1 -s -r -p "Press any key to continue..." From 0614ba04996a2603f3064e1f251eead945dfe1d3 Mon Sep 17 00:00:00 2001 From: Zusier Date: Tue, 15 Mar 2022 19:22:10 -0700 Subject: [PATCH 5/6] Change to alpine --- Dockerfile | 15 +++++++-------- compose.yaml | 2 +- install/docker-linux.sh | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 87d5e1d..aba161c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,19 +4,16 @@ # - Zusier (https://github.com/Zusier) # Node 16 image -FROM node:16.14.0 +FROM node:16.14.0-alpine3.15 # Set working directory WORKDIR /opt/ass/ -# create rootless user with uid/gid as 1000 -RUN groupadd -g 1000 -o ass && useradd -m -u 1000 -g 1000 -o -s /bin/bash ass +# create rootless user with uid/gid as 1001 +RUN addgroup -g 1001 ass && adduser --disabled-password --gecos "" --home "/opt/ass" --no-create-home --uid 1001 --ingroup ass ass # Set permissions for rootless user -RUN chown -R ass /opt/ass/ && chmod -R 774 /opt/ass/ - -# run container as previously created user -USER ass +RUN chown -R ass /opt/ass/&& chmod -R 774 /opt/ass/ # Ensure these directories & files exist for compose volumes RUN mkdir -p /opt/ass/uploads/thumbnails/ && \ @@ -34,5 +31,7 @@ RUN npm i -g npm@8 typescript && \ npm run build && \ chown -R ass /usr/local/bin/npm +USER ass + # Start ass -CMD npm start +CMD npm start \ No newline at end of file diff --git a/compose.yaml b/compose.yaml index 8a679de..0ca397e 100644 --- a/compose.yaml +++ b/compose.yaml @@ -9,7 +9,7 @@ services: command: npm start container_name: ass-docker restart: unless-stopped - user: 1000:1000 + user: 1001:1001 ports: - "40115:40115" volumes: diff --git a/install/docker-linux.sh b/install/docker-linux.sh index 2f1b1e7..bab7209 100755 --- a/install/docker-linux.sh +++ b/install/docker-linux.sh @@ -17,7 +17,7 @@ do done # Ensure proper file permissions for rootless -chown -R 1000:1000 config.json auth.json data.json uploads share +chown -R 1001:1001 config.json auth.json data.json uploads share chmod -R 774 config.json data.json uploads share # Wait for user to confirm From c923adf818a3534aca73a0755fa8351db1583d84 Mon Sep 17 00:00:00 2001 From: Josh Moore Date: Tue, 19 Apr 2022 10:13:32 -0600 Subject: [PATCH 6/6] Update Dockerfile - Removed Alpine (further testing required, Alpine did not work in production for me) - Fixed whitespace issues --- Dockerfile | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index aba161c..a1479a0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,16 +4,17 @@ # - Zusier (https://github.com/Zusier) # Node 16 image -FROM node:16.14.0-alpine3.15 +FROM node:16.14.0 # Set working directory WORKDIR /opt/ass/ -# create rootless user with uid/gid as 1001 -RUN addgroup -g 1001 ass && adduser --disabled-password --gecos "" --home "/opt/ass" --no-create-home --uid 1001 --ingroup ass ass +# Create rootless user with uid/gid as 1001 +RUN addgroup -g 1001 ass && \ + adduser --disabled-password --gecos "" --home "/opt/ass" --no-create-home --uid 1001 --ingroup ass ass # Set permissions for rootless user -RUN chown -R ass /opt/ass/&& chmod -R 774 /opt/ass/ +RUN chown -R ass /opt/ass/ && chmod -R 774 /opt/ass/ # Ensure these directories & files exist for compose volumes RUN mkdir -p /opt/ass/uploads/thumbnails/ && \ @@ -34,4 +35,4 @@ RUN npm i -g npm@8 typescript && \ USER ass # Start ass -CMD npm start \ No newline at end of file +CMD npm start