Update Dockerfile

This commit is contained in:
Asher 2019-07-15 13:23:29 -05:00
parent 68c62087dc
commit 9446cc8245
No known key found for this signature in database
GPG Key ID: D63C1EF81242354A
7 changed files with 35 additions and 24 deletions

View File

@ -1,7 +1,5 @@
Dockerfile Dockerfile
# Docs
doc/ doc/
# GitHub stuff
.github .github
.gitignore .gitignore
.travis.yml .travis.yml

View File

@ -1 +1 @@
10.15.1 10.16.0

View File

@ -1,6 +1,6 @@
language: node_js language: node_js
node_js: node_js:
- 10.15.1 - 10.16.0
services: services:
- docker - docker
matrix: matrix:

View File

@ -1,4 +1,6 @@
FROM node:10.15.1 FROM node:10.16.0
ARG codeServerVersion=docker
ARG vscodeVersion
# Install VS Code's deps. These are the only two it seems we need. # Install VS Code's deps. These are the only two it seems we need.
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
@ -11,9 +13,14 @@ RUN npm install -g yarn@1.13
WORKDIR /src WORKDIR /src
COPY . . COPY . .
# In the future, we can use https://github.com/yarnpkg/rfcs/pull/53 to make yarn use the node_modules
# directly which should be fast as it is slow because it populates its own cache every time. # In the future, we can use https://github.com/yarnpkg/rfcs/pull/53 to make
RUN yarn && NODE_ENV=production yarn task build:server:binary # yarn use the node_modules directly which should be fast as it is slow because
# it populates its own cache every time.
RUN yarn \
&& yarn build "${codeServerVersion}" "${vscodeVersion}" linux x64 \
&& yarn binary "${codeServerVersion}" "${vscodeVersion}" linux x64 \
&& mv "/src/build/code-server${codeServerVersion}-vsc${vscodeVersion}-linux-x64" /src/build/code-server
# 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.04 FROM ubuntu:18.04
@ -30,7 +37,7 @@ RUN apt-get update && apt-get install -y \
wget wget
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 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 LC_ALL=en_US.UTF-8 ENV LC_ALL=en_US.UTF-8
@ -38,16 +45,18 @@ RUN adduser --gecos '' --disabled-password coder && \
echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd echo "coder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd
USER coder USER coder
# We create first instead of just using WORKDIR as when WORKDIR creates, the user is root. # We create first instead of just using WORKDIR as when WORKDIR creates, the
# user is root.
RUN mkdir -p /home/coder/project RUN mkdir -p /home/coder/project
WORKDIR /home/coder/project WORKDIR /home/coder/project
# This assures we have a volume mounted even if the user forgot to do bind mount. # This ensures we have a volume mounted even if the user forgot to do bind
# So that they do not lose their data if they delete the container. # mount. So that they do not lose their data if they delete the container.
VOLUME [ "/home/coder/project" ] VOLUME [ "/home/coder/project" ]
COPY --from=0 /src/packages/server/cli-linux-x64 /usr/local/bin/code-server COPY --from=0 /src/build/code-server /usr/local/bin/code-server
EXPOSE 8443 EXPOSE 8443
EXPOSE 8444
ENTRYPOINT ["dumb-init", "code-server"] ENTRYPOINT ["dumb-init", "code-server", "--host", "0.0.0.0"]

View File

@ -10,7 +10,7 @@ remote server, accessible through the browser.
Try it out: Try it out:
```bash ```bash
docker run -it -p 127.0.0.1:8443:8443 -v "${PWD}:/home/coder/project" codercom/code-server --allow-http --no-auth docker run -it -p 127.0.0.1:8443:8443 -p 127.0.0.1:8444:8444 -v "$PWD:/home/coder/project" codercom/code-server --allow-http --no-auth
``` ```
- Code on your Chromebook, tablet, and laptop with a consistent dev environment. - Code on your Chromebook, tablet, and laptop with a consistent dev environment.
@ -59,9 +59,9 @@ Quickstart guides for [Google Cloud](doc/admin/install/google_cloud.md),
How to [secure your setup](/doc/security/ssl.md). How to [secure your setup](/doc/security/ssl.md).
### Build ### Build
- If you also plan on developing, set the `OUT` environment variable: ` - If you also plan on developing, set the `OUT` environment variable:
export OUT=/path/to/some/directory`. Otherwise it will build in this `export OUT=/path/to/some/directory`. Otherwise it will build in this
directory which will cause issues because then `yarn watch` will try to directory which will cause issues because `yarn watch` will try to
compile the build directory as well. compile the build directory as well.
- For now `@coder/nbin` is a global dependency. - For now `@coder/nbin` is a global dependency.
- Run `yarn build ${codeServerVersion} ${vscodeVersion} ${target} ${arch}` in - Run `yarn build ${codeServerVersion} ${vscodeVersion} ${target} ${arch}` in

View File

@ -16,6 +16,8 @@ function docker-build() {
# TODO: temporary as long as we are rebuilding modules. # TODO: temporary as long as we are rebuilding modules.
if [[ "${image}" == "codercom/nbin-alpine" ]] ; then if [[ "${image}" == "codercom/nbin-alpine" ]] ; then
docker exec "${containerId}" apk add libxkbfile-dev libsecret-dev docker exec "${containerId}" apk add libxkbfile-dev libsecret-dev
else
docker exec "${containerId}" yum install -y libxkbfile-devel libsecret-devel
fi fi
function docker-exec() { function docker-exec() {

View File

@ -94,13 +94,13 @@ function build-code-server() {
rm -rf "${codeServerBuildPath}/out/vs/server/typings" rm -rf "${codeServerBuildPath}/out/vs/server/typings"
# Rebuild to make sure the native modules work since at the moment all the # Rebuild to make sure the native modules work since at the moment all the
# pre-built packages are from one Linux system. This means you must build on # pre-built packages are from one Linux system which compiles against the
# the target system. # latest glibc. This means you must build on the target system.
log "Installing remote dependencies" log "Installing remote dependencies"
cd "${vscodeSourcePath}/remote" cd "${vscodeSourcePath}/remote"
if [[ "${target}" != "linux" ]] ; then # TODO: vscode-ripgrep errors saying node_modules doesn't exist.
yarn --production --force # TODO: yarn --force should be the same but it doesn't fix it.
fi npm rebuild || true
cp -r "${vscodeSourcePath}/remote/node_modules" "${codeServerBuildPath}" cp -r "${vscodeSourcePath}/remote/node_modules" "${codeServerBuildPath}"
# Only keep the production dependencies. # Only keep the production dependencies.
@ -133,7 +133,9 @@ function build-vscode() {
log "Installing VS Code dependencies" log "Installing VS Code dependencies"
# Not entirely sure why but there seem to be problems with native modules # Not entirely sure why but there seem to be problems with native modules
# so rebuild them. # so rebuild them.
yarn --force # TODO: vscode-ripgrep errors saying node_modules doesn't exist.
# TODO: yarn --force should be the same but it'.
npm rebuild || true
# Keep just what we need to keep the pre-built archive smaller. # Keep just what we need to keep the pre-built archive smaller.
rm -rf "${vscodeSourcePath}/test" rm -rf "${vscodeSourcePath}/test"