From 10b02a613bf3017d76a290768fab6a6cebc9cd6c Mon Sep 17 00:00:00 2001 From: Douglas Daniels Date: Tue, 10 Mar 2020 10:55:15 -0500 Subject: [PATCH 1/7] fix error with apt-get update --- .sail/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.sail/Dockerfile b/.sail/Dockerfile index aca884c..33bc579 100644 --- a/.sail/Dockerfile +++ b/.sail/Dockerfile @@ -1,6 +1,7 @@ FROM codercom/ubuntu-dev-go:latest SHELL ["/bin/bash", "-c"] -RUN sudo apt-get update && \ +RUN sudo apt-get upgrade && \ + sudo apt-get update && \ sudo apt-get install -y htop RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash && \ . ~/.nvm/nvm.sh \ From 997bff4de75b992f34706d53d39a431090ed2eeb Mon Sep 17 00:00:00 2001 From: Douglas Daniels Date: Tue, 10 Mar 2020 11:30:02 -0500 Subject: [PATCH 2/7] fix error with apt-get update --- .sail/Dockerfile | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.sail/Dockerfile b/.sail/Dockerfile index 33bc579..4520929 100644 --- a/.sail/Dockerfile +++ b/.sail/Dockerfile @@ -1,8 +1,17 @@ FROM codercom/ubuntu-dev-go:latest SHELL ["/bin/bash", "-c"] -RUN sudo apt-get upgrade && \ - sudo apt-get update && \ - sudo apt-get install -y htop + +# Downgrade to ubuntu 18.04 LTS (codercom/ubuntu-dev-go:latest appears to be using a non-LTS version that is end of life support) +RUN sudo sed -i 's/cosmic/bionic/g' /etc/apt/sources.list +RUN sudo echo $'Package: * \n\ +Pin: release a=bionic \n\ +Pin-Priority: 1001\n' | sudo tee -a /etc/apt/preferences > /dev/null +RUN sudo apt-get update -y --allow-downgrades && \ + sudo apt-get upgrade -y --allow-downgrades && \ + sudo apt dist-upgrade -y --allow-downgrades + +RUN sudo apt-get install -y htop + RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash && \ . ~/.nvm/nvm.sh \ && nvm install node From f7a8a07acf027f6234e855f446dff2a0a7eababd Mon Sep 17 00:00:00 2001 From: Douglas Daniels Date: Tue, 10 Mar 2020 13:56:57 -0500 Subject: [PATCH 3/7] fixes to base docker images --- .sail/Dockerfile | 14 +++----------- images/base/Dockerfile | 2 +- images/ubuntu-dev-go/install_go_tools.sh | 3 ++- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/.sail/Dockerfile b/.sail/Dockerfile index 4520929..2c14433 100644 --- a/.sail/Dockerfile +++ b/.sail/Dockerfile @@ -1,16 +1,8 @@ FROM codercom/ubuntu-dev-go:latest SHELL ["/bin/bash", "-c"] -# Downgrade to ubuntu 18.04 LTS (codercom/ubuntu-dev-go:latest appears to be using a non-LTS version that is end of life support) -RUN sudo sed -i 's/cosmic/bionic/g' /etc/apt/sources.list -RUN sudo echo $'Package: * \n\ -Pin: release a=bionic \n\ -Pin-Priority: 1001\n' | sudo tee -a /etc/apt/preferences > /dev/null -RUN sudo apt-get update -y --allow-downgrades && \ - sudo apt-get upgrade -y --allow-downgrades && \ - sudo apt dist-upgrade -y --allow-downgrades - -RUN sudo apt-get install -y htop +RUN sudo apt-get update && \ + sudo apt-get install -y htop RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash && \ . ~/.nvm/nvm.sh \ @@ -23,4 +15,4 @@ RUN wget -O /tmp/hugo.deb https://github.com/gohugoio/hugo/releases/download/v0. sudo dpkg -i /tmp/hugo.deb && \ rm -f /tmp/hugo.deb -RUN installext peterjausovec.vscode-docker +#RUN installext ms-azuretools.vscode-docker diff --git a/images/base/Dockerfile b/images/base/Dockerfile index a87819d..259852b 100644 --- a/images/base/Dockerfile +++ b/images/base/Dockerfile @@ -1,4 +1,4 @@ -FROM buildpack-deps:cosmic +FROM buildpack-deps:20.04 RUN apt-get update && apt-get install -y \ vim \ diff --git a/images/ubuntu-dev-go/install_go_tools.sh b/images/ubuntu-dev-go/install_go_tools.sh index 859f384..b0f4e37 100755 --- a/images/ubuntu-dev-go/install_go_tools.sh +++ b/images/ubuntu-dev-go/install_go_tools.sh @@ -31,5 +31,6 @@ $GOPATH/bin/gometalinter --install # gopls is generally recommended over community tools. # It's much faster and more reliable than the other options. -go get -u golang.org/x/tools/cmd/gopls +# FIX: https://github.com/golang/go/issues/36442 by running as described here https://github.com/golang/tools/blob/master/gopls/doc/user.md#installation +GO111MODULE=on go get golang.org/x/tools/gopls@latest From 54290b740bb8ce00f2f3e936e8a75f54c824b73a Mon Sep 17 00:00:00 2001 From: Douglas Daniels Date: Tue, 10 Mar 2020 14:33:00 -0500 Subject: [PATCH 4/7] Update base sail Dockerfile to use code-server 3.0.1 --- images/base/Dockerfile | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/images/base/Dockerfile b/images/base/Dockerfile index 259852b..e7eb0a6 100644 --- a/images/base/Dockerfile +++ b/images/base/Dockerfile @@ -23,8 +23,15 @@ ENV LC_ALL=en_US.UTF-8 # Download in code-server into path. sail will typically override the binary # anyways, but it's nice to have this during the build pipepline so we can # install extensions. -RUN wget -O /usr/bin/code-server https://codesrv-ci.cdr.sh/latest-linux && \ - chmod +x /usr/bin/code-server +# Download and Install code-server: https://github.com/cdr/code-server/releases/tag/3.0.0 + +RUN wget -O code-server.tgz "https://codesrv-ci.cdr.sh/releases/3.0.1/linux-x86_64.tar.gz"; \ + tar -C /usr/lib -xzf code-server.tgz; \ + rm code-server.tgz; + +RUN ln -s /usr/lib/code-server-3.0.1-linux-x86_64/code-server /usr/bin/code-server; \ + chmod +x /usr/lib/code-server-3.0.1-linux-x86_64/code-server; \ + chmod +x /usr/bin/code-server; ADD installext /usr/bin/installext \ No newline at end of file From 178bcde488f4542cb22d0b4d872b34121d6cb357 Mon Sep 17 00:00:00 2001 From: Douglas Daniels Date: Tue, 10 Mar 2020 15:40:17 -0500 Subject: [PATCH 5/7] fixes to sail to run --- .sail/Dockerfile | 4 +++- internal/codeserver/download.go | 4 ++-- runner.go | 15 ++++++++------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.sail/Dockerfile b/.sail/Dockerfile index 2c14433..c84b2a6 100644 --- a/.sail/Dockerfile +++ b/.sail/Dockerfile @@ -15,4 +15,6 @@ RUN wget -O /tmp/hugo.deb https://github.com/gohugoio/hugo/releases/download/v0. sudo dpkg -i /tmp/hugo.deb && \ rm -f /tmp/hugo.deb -#RUN installext ms-azuretools.vscode-docker +# Fails to install Extension 'ms-azuretools.vscode-docker' not found. +# error vscode undefined +# RUN installext ms-azuretools.vscode-docker diff --git a/internal/codeserver/download.go b/internal/codeserver/download.go index b1cb3a1..8c73811 100644 --- a/internal/codeserver/download.go +++ b/internal/codeserver/download.go @@ -20,8 +20,8 @@ func DownloadURL(ctx context.Context) (string, error) { return "", xerrors.Errorf("failed to get latest code-server release: %w", err) } for _, v := range rel.Assets { - // TODO: fix this jank. - if strings.Index(*v.Name, "linux") < 0 { + // TODO: fix this jank, detect container architecture instead of hardcoding to x86_64 + if strings.Index(*v.Name, "linux-x86_64") < 0 { continue } return *v.BrowserDownloadURL, nil diff --git a/runner.go b/runner.go index 4857447..be1db4f 100644 --- a/runner.go +++ b/runner.go @@ -165,13 +165,14 @@ func (r *runner) constructCommand(projectDir string) string { // // We start code-server such that extensions installed through the UI are placed in the host's extension dir. cmd := fmt.Sprintf(`set -euxo pipefail || exit 1 -cd %v -# This is necessary in case the .vscode directory wasn't created inside the container, as mounting to the host -# extension dir will create it as root. -sudo chown user:user ~/.vscode -code-server --host %v --port %v \ - --data-dir ~/.config/Code --extensions-dir %v --extra-extensions-dir ~/.vscode/extensions --allow-http --no-auth 2>&1 | tee %v -`, projectDir, containerAddr, containerPort, hostExtensionsDir, containerLogPath) + cd %v + # This is necessary in case the .vscode directory wasn't created inside the container, as mounting to the host + # extension dir will create it as root. + sudo chown user:user ~/.vscode + /usr/bin/code-server --host %v --port %v --user-data-dir ~/.config/Code --extensions-dir %v --extra-extensions-dir ~/.vscode/extensions --auth=none \ + --allow-http 2>&1 | tee %v + `, projectDir, containerAddr, containerPort, hostExtensionsDir, containerLogPath) + if r.testCmd != "" { cmd = r.testCmd + "\n exit 1" } From 1bb64e54b5da6a3b6ae0a45ec17a3996f523d227 Mon Sep 17 00:00:00 2001 From: Douglas Daniels Date: Tue, 17 Mar 2020 12:47:38 -0500 Subject: [PATCH 6/7] PR feedback - fix Dockerfile run commands and runner bash exec --- .sail/Dockerfile | 4 ---- images/base/Dockerfile | 15 ++++++--------- runner.go | 14 +++++++------- 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/.sail/Dockerfile b/.sail/Dockerfile index c84b2a6..6f4d7a5 100644 --- a/.sail/Dockerfile +++ b/.sail/Dockerfile @@ -14,7 +14,3 @@ LABEL project_root "~/go/src/go.coder.com" RUN wget -O /tmp/hugo.deb https://github.com/gohugoio/hugo/releases/download/v0.55.4/hugo_extended_0.55.4_Linux-64bit.deb && \ sudo dpkg -i /tmp/hugo.deb && \ rm -f /tmp/hugo.deb - -# Fails to install Extension 'ms-azuretools.vscode-docker' not found. -# error vscode undefined -# RUN installext ms-azuretools.vscode-docker diff --git a/images/base/Dockerfile b/images/base/Dockerfile index e7eb0a6..0e174a8 100644 --- a/images/base/Dockerfile +++ b/images/base/Dockerfile @@ -24,14 +24,11 @@ ENV LC_ALL=en_US.UTF-8 # anyways, but it's nice to have this during the build pipepline so we can # install extensions. -# Download and Install code-server: https://github.com/cdr/code-server/releases/tag/3.0.0 - -RUN wget -O code-server.tgz "https://codesrv-ci.cdr.sh/releases/3.0.1/linux-x86_64.tar.gz"; \ - tar -C /usr/lib -xzf code-server.tgz; \ - rm code-server.tgz; - -RUN ln -s /usr/lib/code-server-3.0.1-linux-x86_64/code-server /usr/bin/code-server; \ - chmod +x /usr/lib/code-server-3.0.1-linux-x86_64/code-server; \ - chmod +x /usr/bin/code-server; +RUN wget -O code-server.tgz "https://codesrv-ci.cdr.sh/releases/3.0.1/linux-x86_64.tar.gz" && \ + tar -C /usr/lib -xzf code-server.tgz && \ + rm code-server.tgz && \ + ln -s /usr/lib/code-server-3.0.1-linux-x86_64/code-server /usr/bin/code-server && \ + chmod +x /usr/lib/code-server-3.0.1-linux-x86_64/code-server && \ + chmod +x /usr/bin/code-server ADD installext /usr/bin/installext \ No newline at end of file diff --git a/runner.go b/runner.go index be1db4f..0cf0567 100644 --- a/runner.go +++ b/runner.go @@ -165,13 +165,13 @@ func (r *runner) constructCommand(projectDir string) string { // // We start code-server such that extensions installed through the UI are placed in the host's extension dir. cmd := fmt.Sprintf(`set -euxo pipefail || exit 1 - cd %v - # This is necessary in case the .vscode directory wasn't created inside the container, as mounting to the host - # extension dir will create it as root. - sudo chown user:user ~/.vscode - /usr/bin/code-server --host %v --port %v --user-data-dir ~/.config/Code --extensions-dir %v --extra-extensions-dir ~/.vscode/extensions --auth=none \ - --allow-http 2>&1 | tee %v - `, projectDir, containerAddr, containerPort, hostExtensionsDir, containerLogPath) +cd %v +# This is necessary in case the .vscode directory wasn't created inside the container, as mounting to the host +# extension dir will create it as root. +sudo chown user:user ~/.vscode +/usr/bin/code-server --host %v --port %v --user-data-dir ~/.config/Code --extensions-dir %v --extra-extensions-dir ~/.vscode/extensions --auth=none \ +--allow-http 2>&1 | tee %v`, + projectDir, containerAddr, containerPort, hostExtensionsDir, containerLogPath) if r.testCmd != "" { cmd = r.testCmd + "\n exit 1" From 0234e43441337c12a7aee27ed383b40792aef4c4 Mon Sep 17 00:00:00 2001 From: Douglas Daniels Date: Tue, 17 Mar 2020 13:11:36 -0500 Subject: [PATCH 7/7] base/Dockerfile fix inconsistent spaces --- images/base/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/images/base/Dockerfile b/images/base/Dockerfile index 0e174a8..1c4b1bf 100644 --- a/images/base/Dockerfile +++ b/images/base/Dockerfile @@ -25,8 +25,8 @@ ENV LC_ALL=en_US.UTF-8 # install extensions. RUN wget -O code-server.tgz "https://codesrv-ci.cdr.sh/releases/3.0.1/linux-x86_64.tar.gz" && \ - tar -C /usr/lib -xzf code-server.tgz && \ - rm code-server.tgz && \ + tar -C /usr/lib -xzf code-server.tgz && \ + rm code-server.tgz && \ ln -s /usr/lib/code-server-3.0.1-linux-x86_64/code-server /usr/bin/code-server && \ chmod +x /usr/lib/code-server-3.0.1-linux-x86_64/code-server && \ chmod +x /usr/bin/code-server