From 9cd7c5cfab18c99ebba41a8088d069a2d8f9dce8 Mon Sep 17 00:00:00 2001 From: panda Date: Wed, 1 Mar 2023 15:20:53 +0800 Subject: [PATCH] devcontainer: bump node version to 18 (#523) --- .devcontainer/Dockerfile | 29 +++++++--------------- .devcontainer/devcontainer.json | 42 +++++++++++++------------------- .devcontainer/docker-compose.yml | 21 ++++++++-------- .gitpod.yml | 3 +++ 4 files changed, 39 insertions(+), 56 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 4405516b..36ff3539 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,20 +1,9 @@ -# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster -ARG VARIANT=16-bullseye -FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${VARIANT} - -# Install MongoDB command line tools if on buster and x86_64 (arm64 not supported) -ARG MONGO_TOOLS_VERSION=5.0 -RUN . /etc/os-release \ - && if [ "${VERSION_CODENAME}" = "buster" ] && [ "$(dpkg --print-architecture)" = "amd64" ]; then \ - curl -sSL "https://www.mongodb.org/static/pgp/server-${MONGO_TOOLS_VERSION}.asc" | gpg --dearmor > /usr/share/keyrings/mongodb-archive-keyring.gpg \ - && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/mongodb-archive-keyring.gpg] http://repo.mongodb.org/apt/debian $(lsb_release -cs)/mongodb-org/${MONGO_TOOLS_VERSION} main" | tee /etc/apt/sources.list.d/mongodb-org-${MONGO_TOOLS_VERSION}.list \ - && apt-get update && export DEBIAN_FRONTEND=noninteractive \ - && apt-get install -y mongodb-database-tools mongodb-mongosh \ - && apt-get clean -y && rm -rf /var/lib/apt/lists/*; \ - fi - -RUN npm i pm2 yarn -g && \ - sudo apt-get update && \ - sudo apt-get install clang -y --no-install-recommends && \ - mkdir -p ~/.hydro && \ - echo '{"host":"127.0.0.1","port":"27017","name":"hydro","username":"","password":""}' >~/.hydro/config.json && \ +FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:18-bullseye +ADD https://github.com/criyle/go-judge/releases/download/v1.6.3/executorserver_1.6.3_linux_amd64 /usr/bin/sandbox +RUN npm install -g yarn && \ + sudo apt-get update && sudo apt-get install gcc g++ && \ + mkdir -p /root/.hydro /data/file && chmod +x /usr/bin/sandbox && \ + chown -R root:root /root /root/.hydro /data/file && \ + echo '{"uri":"mongodb://mongo/hydro"}' > /root/.hydro/config.json && \ + echo '["@hydrooj/ui-default","@hydrooj/hydrojudge"]' > /root/.hydro/addon.json +ENTRYPOINT sandbox diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 5ba9e291..fb9cd449 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,32 +1,24 @@ -// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: -// https://github.com/microsoft/vscode-dev-containers/tree/v0.233.0/containers/javascript-node-mongo -// Update the VARIANT arg in docker-compose.yml to pick a Node.js version { - "name": "Node.js & Mongo DB", + "name": "Hydro Dev Container", "dockerComposeFile": "docker-compose.yml", - "service": "app", + "service": "hydro", "workspaceFolder": "/workspace", - // Set *default* container specific settings.json values on container create. - "settings": {}, - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "dbaeumer.vscode-eslint", - "gruntfuggly.todo-tree", - "ronnidc.nunjucks", - "sysoev.language-stylus", - "vscode-icons-team.vscode-icons" - ], - // Use 'forwardPorts' to make a list of ports inside the container available locally. + "customizations": { + "vscode": { + "extensions": [ + "dbaeumer.vscode-eslint", + "gruntfuggly.todo-tree", + "ronnidc.nunjucks", + "eamodio.gitlens", + "vscode-icons-team.vscode-icons", + "sysoev.language-stylus" + ] + } + }, + "remoteUser": "root", "forwardPorts": [ 2333, - 27017, - 8888 + 8000 ], - // Use 'postCreateCommand' to run commands after the container is created. - "postCreateCommand": "yarn install && npx hydrooj cli system set server.port 2333 && npx hydrooj cli user create root@hydro.local root rootroot 2 && npx hydrooj cli user setSuperAdmin 2", - // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. - "remoteUser": "root", - "features": { - "ghcr.io/devcontainers/features/git:1": {} - } + "postCreateCommand": "git submodule update --init && yarn install && npx hydrooj cli system set server.port 2333 && npx hydrooj cli user create root@hydro.local root rootroot 2 && npx hydrooj cli user setSuperAdmin 2" } diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 646de05d..01902971 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -1,22 +1,21 @@ -version: '3.8' +version: '3.9' services: - app: + mongo: + image: mongo:4-focal + restart: unless-stopped + volumes: + - mongodb-data:/data/db + hydro: build: context: . dockerfile: Dockerfile - args: - VARIANT: 16 + privileged: true + depends_on: + - mongo volumes: - ..:/workspace:cached - testdata:/data/file - command: sleep infinity - network_mode: service:db - db: - image: mongo:latest - restart: unless-stopped - volumes: - - mongodb-data:/data/db volumes: mongodb-data: diff --git a/.gitpod.yml b/.gitpod.yml index 44365f2b..8037f9cb 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -7,6 +7,9 @@ tasks: init: | mkdir -p /home/gitpod/.hydro echo '{"host":"127.0.0.1","port":"27017","name":"hydro","username":"","password":""}' >/home/gitpod/.hydro/config.json && \ + nvm install 18 + nvm use 18 + nvm alias default 18 yarn yarn build:ui:production npx hydrooj cli system set server.port 2333