未验证 提交 9446cc82 编写于 作者: A Asher

Update Dockerfile

上级 68c62087
Dockerfile
# Docs
doc/
# GitHub stuff
.github
.gitignore
.travis.yml
......
language: node_js
node_js:
- 10.15.1
- 10.16.0
services:
- docker
matrix:
......
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"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册