diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..050334d --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,43 @@ +# Due to the bug of #145, Node.js's version cannot be changed, unless upstream is fixed. +# TODO: use proper devcontainer?? +FROM node:18.17.1-bookworm + +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +ENV NODE_ENV="development" +RUN apt update && apt install --yes --no-install-recommends \ + curl \ + ca-certificates \ + gnupg \ + unzip \ + dumb-init \ + sqlite3 \ + && install -m 0755 -d /etc/apt/keyrings \ + && curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \ + && chmod a+r /etc/apt/keyrings/docker.gpg \ + && echo \ + "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ + "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ + tee /etc/apt/sources.list.d/docker.list > /dev/null \ + && apt update \ + && apt --yes --no-install-recommends install \ + docker-ce-cli \ + docker-compose-plugin \ + && rm -rf /var/lib/apt/lists/* \ + && npm install pnpm -g \ + && pnpm install -g tsx + +# Set the working directory +WORKDIR /app + +# Copy package.json and pnpm-lock.yaml to the working directory +COPY --chown=node:node ./package.json ./package.json +COPY --chown=node:node ./pnpm-lock.yaml ./pnpm-lock.yaml +RUN pnpm install + +# Add the "node_modules" volume to enable caching +VOLUME [ "/app/node_modules" ] +VOLUME [ "/opt/stacks" ] + +# Start the container with a shell by default +CMD [ "/bin/bash" ] \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..99be8f2 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,24 @@ +{ + "name": "Dockge", + "build": { + "dockerfile": "Dockerfile", + "context": ".." + }, + "runArgs": [ + "-v", "/var/run/docker.sock:/var/run/docker.sock" + ], + "forwardPorts": [5000, 5001, 9229], + "customizations": { + "vscode": { + "extensions": [ + "dbaeumer.vscode-eslint", + "ms-vscode.vscode-typescript-tslint-plugin", + "vue.volar", + "alexcvzz.vscode-sqlite" + ], + "settings": { + "terminal.integrated.shell.linux": "/bin/bash" + } + } + } +} \ No newline at end of file diff --git a/.dockerignore b/.dockerignore index 1adf5fe..cddab33 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,6 +6,7 @@ data stacks tmp /private +.pnpm-store # Docker extra docker diff --git a/.gitignore b/.gitignore index decd817..17d3387 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ data stacks tmp /private +.pnpm-store # Git only frontend-dist