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
This commit is contained in:
Anmol Sethi 2019-04-04 16:43:23 -05:00
parent 0b7a090a73
commit ebac84899e
No known key found for this signature in database
GPG Key ID: 8CEF1878FF10ADEB

View File

@ -16,17 +16,30 @@ COPY . .
RUN yarn && NODE_ENV=production yarn task build:server:binary RUN yarn && NODE_ENV=production yarn task build:server:binary
# We deploy with ubuntu so that devs have a familiar environment. # 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 \ RUN apt-get update && apt-get install -y \
openssl \ openssl \
net-tools \ net-tools \
git \ git \
locales \ locales \
sudo \
dumb-init dumb-init
RUN locale-gen en_US.UTF-8 RUN locale-gen en_US.UTF-8
# We unfortunately cannot use update-locale because docker will not use the env variables # 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. # 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 ENV LC_ALL=en_US.UTF-8
ENTRYPOINT ["/usr/bin/dumb-init", "code-server"]
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"]