Browse Source

Merge pull request #997 from stephenandary/dioxus-devcontainer

Devcontainer for Contributors
Jon Kelley 2 years ago
parent
commit
2b421e055b
3 changed files with 71 additions and 0 deletions
  1. 8 0
      .devcontainer/Dockerfile
  2. 26 0
      .devcontainer/README.md
  3. 37 0
      .devcontainer/devcontainer.json

+ 8 - 0
.devcontainer/Dockerfile

@@ -0,0 +1,8 @@
+ARG VARIANT="nightly-bookworm-slim"
+FROM rustlang/rust:${VARIANT}
+ENV DEBIAN_FRONTEND noninteractive
+RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
+
+RUN apt-get update && export DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get -qq install build-essential libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev

+ 26 - 0
.devcontainer/README.md

@@ -0,0 +1,26 @@
+# Dev Container
+
+A dev container in the most simple context allows one to create a consistent development environment within a docker container that can easily be opened locally or remotely via codespaces such that contributors don't need to install anything to contribute.
+
+## Useful Links
+
+- <https://code.visualstudio.com/docs/devcontainers/containers>
+- <https://containers.dev/>
+- <https://github.com/devcontainers>
+- <https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers>
+
+## Using A Dev Container
+
+### Locally
+
+To use this dev container locally, make sure Docker is installed and in VSCode install the `ms-vscode-remote.remote-containers` extension. Then from the root of Dioxus you can type `Ctrl + Shift + P`, then choose `Dev Containers: Rebuild and Reopen in Devcontainer`.
+
+### Codespaces
+
+[Codespaces Setup](https://docs.github.com/en/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository#creating-a-codespace-for-a-repository)
+
+## Troubleshooting
+
+If having difficulty commiting with github, and you use ssh or gpg keys, you may need to ensure that the keys are being shared properly between your host and VSCode.
+
+Though VSCode does a pretty good job sharing credentials between host and devcontainer, to save some time you can always just reopen the container locally to commit with `Ctrl + Shift + P`, then choose `Dev Containers: Reopen Folder Locally`

+ 37 - 0
.devcontainer/devcontainer.json

@@ -0,0 +1,37 @@
+{
+    "name": "dioxus",
+    "remoteUser": "vscode",
+    "build": {
+        "dockerfile": "./Dockerfile",
+        "context": "."
+    },
+    "features": {
+        "ghcr.io/devcontainers/features/common-utils:2": {
+            "installZsh": "true",
+            "username": "vscode",
+            "uid": "1000",
+            "gid": "1000",
+            "upgradePackages": "true"
+        }
+    },
+    "containerEnv": {
+        "RUST_LOG": "INFO"
+    },
+    "customizations": {
+        "vscode": {
+            "settings": {
+                "files.watcherExclude": {
+                    "**/target/**": true
+                },
+                "[rust]": {
+                    "editor.formatOnSave": true
+                }
+            },
+            "extensions": [
+                "rust-lang.rust-analyzer",
+                "tamasfe.even-better-toml",
+                "serayuzgur.crates"
+            ]
+        }
+    }
+}