From 15948c1af62d1bd17a1bd304d6ee6013a168ace3 Mon Sep 17 00:00:00 2001 From: Hikari Date: Tue, 12 Mar 2019 02:55:11 +0000 Subject: [PATCH 1/5] feat: user-mode docker Signed-off-by: Hikari --- Dockerfile | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index 74f90e69..16c535a8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,18 +17,28 @@ RUN yarn && NODE_ENV=production yarn task build:server:binary # We deploy with ubuntu so that devs have a familiar environment. FROM ubuntu:18.10 -WORKDIR /root/project -COPY --from=0 /src/packages/server/cli-linux-x64 /usr/local/bin/code-server -EXPOSE 8443 -RUN apt-get update && apt-get install -y \ - openssl \ - net-tools \ - git \ - locales -RUN locale-gen en_US.UTF-8 # We unfortunately cannot use update-locale because docker will not use the env variables # configured in /etc/default/locale so we need to set it manually. ENV LANG=en_US.UTF-8 -ENV LC_ALL=en_US.UTF-8 -ENTRYPOINT ["code-server"] + +COPY --from=0 /src/packages/server/cli-linux-x64 /usr/local/bin/code-server +RUN apt-get update && apt-get install -y \ + sudo \ + openssl \ + locales \ + net-tools && \ + adduser --disabled-password --ingroup sudo --gecos '' coder && \ + echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ + echo "user ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/user && \ + chmod 0440 /etc/sudoers.d/user; + +RUN locale-gen en_US.UTF-8 + +USER coder + +WORKDIR /home/coder + +EXPOSE 8443 +ENTRYPOINT code-server +CMD ["."] From a95019f38d644a8aec0cd33ab176da8760ceeb2c Mon Sep 17 00:00:00 2001 From: Hikari Kibo Date: Wed, 20 Mar 2019 23:24:18 +0800 Subject: [PATCH 2/5] fix: slap adduser into another RUN im abusing the word slap today please help me --- Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 16c535a8..39965b9a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,8 +27,9 @@ RUN apt-get update && apt-get install -y \ sudo \ openssl \ locales \ - net-tools && \ - adduser --disabled-password --ingroup sudo --gecos '' coder && \ + net-tools; + +RUN adduser --disabled-password --ingroup sudo --gecos '' coder && \ echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ echo "user ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/user && \ chmod 0440 /etc/sudoers.d/user; @@ -40,5 +41,4 @@ USER coder WORKDIR /home/coder EXPOSE 8443 -ENTRYPOINT code-server -CMD ["."] +ENTRYPOINT ["code-server"] From 0b7a090a7372394624de55c2bf34bd2a805657a4 Mon Sep 17 00:00:00 2001 From: Richard McSorley Date: Tue, 2 Apr 2019 19:24:44 -0500 Subject: [PATCH 3/5] Use an init system --- Dockerfile | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/Dockerfile b/Dockerfile index 39965b9a..da02c570 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,27 +18,15 @@ RUN yarn && NODE_ENV=production yarn task build:server:binary # We deploy with ubuntu so that devs have a familiar environment. FROM ubuntu:18.10 +RUN apt-get update && apt-get install -y \ + openssl \ + net-tools \ + git \ + locales \ + dumb-init +RUN locale-gen en_US.UTF-8 # We unfortunately cannot use update-locale because docker will not use the env variables # configured in /etc/default/locale so we need to set it manually. ENV LANG=en_US.UTF-8 - -COPY --from=0 /src/packages/server/cli-linux-x64 /usr/local/bin/code-server -RUN apt-get update && apt-get install -y \ - sudo \ - openssl \ - locales \ - net-tools; - -RUN adduser --disabled-password --ingroup sudo --gecos '' coder && \ - echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ - echo "user ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/user && \ - chmod 0440 /etc/sudoers.d/user; - -RUN locale-gen en_US.UTF-8 - -USER coder - -WORKDIR /home/coder - -EXPOSE 8443 -ENTRYPOINT ["code-server"] +ENV LC_ALL=en_US.UTF-8 +ENTRYPOINT ["/usr/bin/dumb-init", "code-server"] From ebac84899e71d04a313f9ce1f94dfe9171aae249 Mon Sep 17 00:00:00 2001 From: Anmol Sethi Date: Thu, 4 Apr 2019 16:43:23 -0500 Subject: [PATCH 4/5] Significantly improve the Dockerfile - Adds dumb-init so closes #403, closes #361, closes #383 - User mode docker so closes #192, closes #65 - Uses latest docker ubuntu instead of 18.10 which is the rolling tag so closes #404 Thanks to @RichardMcSorley and @sr229 --- Dockerfile | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index da02c570..e00bd66a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,17 +16,30 @@ COPY . . RUN yarn && NODE_ENV=production yarn task build:server:binary # We deploy with ubuntu so that devs have a familiar environment. -FROM ubuntu:18.10 +FROM ubuntu:18.04 RUN apt-get update && apt-get install -y \ openssl \ net-tools \ git \ locales \ + sudo \ dumb-init + RUN locale-gen en_US.UTF-8 # We unfortunately cannot use update-locale because docker will not use the env variables # configured in /etc/default/locale so we need to set it manually. -ENV LANG=en_US.UTF-8 -ENV LC_ALL=en_US.UTF-8 -ENTRYPOINT ["/usr/bin/dumb-init", "code-server"] +ENV LC_ALL=en_US.UTF-8 + +RUN adduser --gecos '' --disabled-password coder +RUN echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd + +USER coder +# We create first instead of just using WORKDIR as when WORKDIR creates, the user is root. +RUN mkdir -p /home/coder/project +WORKDIR /home/coder/project + +COPY --from=0 /src/packages/server/cli-linux-x64 /usr/local/bin/code-server +EXPOSE 8443 + +ENTRYPOINT ["dumb-init", "code-server"] From eb0f773146a7076a9ce358b6787bc0c549fe4521 Mon Sep 17 00:00:00 2001 From: Anmol Sethi Date: Thu, 4 Apr 2019 17:09:24 -0500 Subject: [PATCH 5/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3407c2eb..00b82faa 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Try it out: ```bash -docker run -t -p 127.0.0.1:8443:8443 -v "${PWD}:/root/project" codercom/code-server code-server --allow-http --no-auth +docker run -it -p 127.0.0.1:8443:8443 -v "${PWD}:/home/coder/project" codercom/code-server:1.621 --allow-http --no-auth ``` - Code on your Chromebook, tablet, and laptop with a consistent dev environment.