Update Dockerfile
This commit is contained in:
parent
68c62087dc
commit
9446cc8245
|
@ -1,7 +1,5 @@
|
||||||
Dockerfile
|
Dockerfile
|
||||||
# Docs
|
|
||||||
doc/
|
doc/
|
||||||
# GitHub stuff
|
|
||||||
.github
|
.github
|
||||||
.gitignore
|
.gitignore
|
||||||
.travis.yml
|
.travis.yml
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
10.15.1
|
10.16.0
|
||||||
|
|
|
@ -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:
|
||||||
|
|
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.
|
# 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"]
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in New Issue