From ffb1e65d2ff051e188a72474767e341eeda286af Mon Sep 17 00:00:00 2001 From: undefined Date: Thu, 19 May 2022 03:21:25 +0000 Subject: [PATCH] workspace: add .devcontainer --- .devcontainer/Dockerfile | 21 ++++++++++++++++++++ .devcontainer/devcontainer.json | 34 ++++++++++++++++++++++++++++++++ .devcontainer/docker-compose.yml | 29 +++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/docker-compose.yml diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..05f0a7d1 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,21 @@ +# [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 && \ + echo "MINIO_ACCESS_KEY=minioadmin\nMINIO_SECRET_KEY=minioadmin" >~/.hydro/env diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..6c63faf9 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,34 @@ +// 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", + "dockerComposeFile": "docker-compose.yml", + "service": "app", + "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. + "forwardPorts": [ + 2333, + 27017, + 8888, + 9000, + 9001 + ], + // 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": { + "git": "latest" + } +} \ No newline at end of file diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 00000000..5ff5e1d0 --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,29 @@ +version: '3.8' + +services: + app: + build: + context: . + dockerfile: Dockerfile + args: + VARIANT: 16 + volumes: + - ..:/workspace:cached + command: sleep infinity + network_mode: service:db + db: + image: mongo:latest + restart: unless-stopped + volumes: + - mongodb-data:/data/db + minio: + image: minio/minio:latest + restart: unless-stopped + volumes: + - minio-data:/data + network_mode: service:db + command: minio server /data --console-address ":9001" + +volumes: + mongodb-data: + minio-data: \ No newline at end of file