Update Dockerfile
This commit is contained in:
parent
68c62087dc
commit
9446cc8245
@ -1,7 +1,5 @@
|
||||
Dockerfile
|
||||
# Docs
|
||||
doc/
|
||||
# GitHub stuff
|
||||
.github
|
||||
.gitignore
|
||||
.travis.yml
|
||||
|
@ -1 +1 @@
|
||||
10.15.1
|
||||
10.16.0
|
||||
|
@ -1,6 +1,6 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- 10.15.1
|
||||
- 10.16.0
|
||||
services:
|
||||
- docker
|
||||
matrix:
|
||||
|
29
Dockerfile
29
Dockerfile
@ -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.
|
||||
RUN apt-get update && apt-get install -y \
|
||||
@ -11,9 +13,14 @@ RUN npm install -g yarn@1.13
|
||||
WORKDIR /src
|
||||
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.
|
||||
RUN yarn && NODE_ENV=production yarn task build:server:binary
|
||||
|
||||
# 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.
|
||||
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.
|
||||
FROM ubuntu:18.04
|
||||
@ -30,7 +37,7 @@ RUN apt-get update && apt-get install -y \
|
||||
wget
|
||||
|
||||
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.
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
WORKDIR /home/coder/project
|
||||
|
||||
# This assures we have a volume mounted even if the user forgot to do bind mount.
|
||||
# So that they do not lose their data if they delete the container.
|
||||
# This ensures we have a volume mounted even if the user forgot to do bind
|
||||
# mount. So that they do not lose their data if they delete the container.
|
||||
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 8444
|
||||
|
||||
ENTRYPOINT ["dumb-init", "code-server"]
|
||||
ENTRYPOINT ["dumb-init", "code-server", "--host", "0.0.0.0"]
|
||||
|
@ -10,7 +10,7 @@ remote server, accessible through the browser.
|
||||
|
||||
Try it out:
|
||||
```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.
|
||||
@ -59,9 +59,9 @@ Quickstart guides for [Google Cloud](doc/admin/install/google_cloud.md),
|
||||
How to [secure your setup](/doc/security/ssl.md).
|
||||
|
||||
### Build
|
||||
- If you also plan on developing, set the `OUT` environment variable: `
|
||||
export OUT=/path/to/some/directory`. Otherwise it will build in this
|
||||
directory which will cause issues because then `yarn watch` will try to
|
||||
- If you also plan on developing, set the `OUT` environment variable:
|
||||
`export OUT=/path/to/some/directory`. Otherwise it will build in this
|
||||
directory which will cause issues because `yarn watch` will try to
|
||||
compile the build directory as well.
|
||||
- For now `@coder/nbin` is a global dependency.
|
||||
- Run `yarn build ${codeServerVersion} ${vscodeVersion} ${target} ${arch}` in
|
||||
|
@ -16,6 +16,8 @@ function docker-build() {
|
||||
# TODO: temporary as long as we are rebuilding modules.
|
||||
if [[ "${image}" == "codercom/nbin-alpine" ]] ; then
|
||||
docker exec "${containerId}" apk add libxkbfile-dev libsecret-dev
|
||||
else
|
||||
docker exec "${containerId}" yum install -y libxkbfile-devel libsecret-devel
|
||||
fi
|
||||
|
||||
function docker-exec() {
|
||||
|
@ -94,13 +94,13 @@ function build-code-server() {
|
||||
rm -rf "${codeServerBuildPath}/out/vs/server/typings"
|
||||
|
||||
# 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
|
||||
# the target system.
|
||||
# pre-built packages are from one Linux system which compiles against the
|
||||
# latest glibc. This means you must build on the target system.
|
||||
log "Installing remote dependencies"
|
||||
cd "${vscodeSourcePath}/remote"
|
||||
if [[ "${target}" != "linux" ]] ; then
|
||||
yarn --production --force
|
||||
fi
|
||||
# TODO: vscode-ripgrep errors saying node_modules doesn't exist.
|
||||
# TODO: yarn --force should be the same but it doesn't fix it.
|
||||
npm rebuild || true
|
||||
cp -r "${vscodeSourcePath}/remote/node_modules" "${codeServerBuildPath}"
|
||||
|
||||
# Only keep the production dependencies.
|
||||
@ -133,7 +133,9 @@ function build-vscode() {
|
||||
log "Installing VS Code dependencies"
|
||||
# Not entirely sure why but there seem to be problems with native modules
|
||||
# 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.
|
||||
rm -rf "${vscodeSourcePath}/test"
|
||||
|
Reference in New Issue
Block a user