diff --git a/.codesandbox/tasks.json b/.codesandbox/tasks.json index 9a3d6bf3..56e44545 100644 --- a/.codesandbox/tasks.json +++ b/.codesandbox/tasks.json @@ -1,23 +1,18 @@ { // These tasks will run in order when initializing your CodeSandbox project. - "setupTasks": [ - { - "name": "Install Dependencies", - "command": "npm install" - } - ], + "setupTasks": [], // These tasks can be run from CodeSandbox. Running one will open a log in the app. "tasks": { "dev": { "name": "Start Server", - "command": "npm install && npm run build && npm start", + "command": "npm start", "runAtStart": true, "preview": { "port": 3000 }, "restartOn": { - "files": ["./package-lock.json"] + "files": ["./package.json"] } }, "build": { diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..6204243f --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,34 @@ +FROM mcr.microsoft.com/devcontainers/typescript-node:1-20-bullseye + +ARG DEBIAN_FRONTEND=noninteractive + +# 如果没有特别需要不要配置 +ENV BING_HEADER "" + +# Set home to the user's home directory +ENV HOME=/home/user \ + PATH=/home/user/.local/bin:$PATH + +# Set up a new user named "user" with user ID 1000 +RUN useradd -o -u 1000 user && mkdir -p $HOME/app && chown -R user $HOME + +# Switch to the "user" user +USER user + +# Set the working directory to the user's home directory +WORKDIR $HOME/app + +# Copy the current directory contents into the container at $HOME/app setting the owner to the user +COPY --chown=user . $HOME/app/ + +RUN if [ ! -f ".next/routes-manifest.json" ]; then \ + npm install && npm run build; \ + fi + +RUN rm -rf src + +ENV PORT 7860 + +EXPOSE 7860 + +CMD npm start diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 19f7f683..00e53eb0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,22 +1,25 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the // README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node { - "name": "Node.js & TypeScript", - // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile - "image": "mcr.microsoft.com/devcontainers/typescript-node:1-20-bullseye" + "name": "Node.js & TypeScript", + // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile + "build": { + // Path is relative to the devcontainer.json file. + "dockerfile": "Dockerfile" + } - // Features to add to the dev container. More info: https://containers.dev/features. - // "features": {}, + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], - // Use 'postCreateCommand' to run commands after the container is created. - // "postCreateCommand": "yarn install", + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "yarn install", - // Configure tool-specific properties. - // "customizations": {}, + // Configure tool-specific properties. + // "customizations": {}, - // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. - // "remoteUser": "root" + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" } diff --git a/Dockerfile b/Dockerfile index ace0ce3d..983b70d4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,13 @@ -FROM node:18 +FROM node:20 ARG DEBIAN_FRONTEND=noninteractive +# 如果没有特别需要不要配置 ENV BING_HEADER "" # Set home to the user's home directory ENV HOME=/home/user \ - PATH=/home/user/.local/bin:$PATH + PATH=/home/user/.local/bin:$PATH # Set up a new user named "user" with user ID 1000 RUN useradd -o -u 1000 user && mkdir -p $HOME/app && chown -R user $HOME @@ -22,7 +23,7 @@ COPY --chown=user . $HOME/app/ RUN if [ ! -f ".next/routes-manifest.json" ]; then \ npm install && npm run build; \ -fi + fi RUN rm -rf src