github.com/pachyderm/pachyderm@v1.13.4/doc/docs/1.9.x/contributing/windows.md (about) 1 # Developing Pachyderm in Windows with VSCode 2 3 ## Install 4 5 * [go v1.13.x+](https://golang.org/dl/) 6 * [VSCode](https://code.visualstudio.com/download) 7 * [git](https://git-scm.com/download/win) 8 * [docker toolbox](https://github.com/docker/toolbox/releases) 9 * [VirtualBox](https://www.virtualbox.org/wiki/Downloads) 10 * [minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/#install-minikube-using-an-installer-executable) 11 * [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) - this is a raw exe, copy somewhere in PATH, like the minikube dir 12 13 ## Configure 14 15 Add any VSCode extensions you may need for development, like `go` and `docker`. 16 17 Configure your terminal (opened via `` ctrl+` ``) to use `git bash` instead of `cmd`. Add the following to your `settings.json` (depending on where your `git bash` actually exists): 18 ``` 19 "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe", 20 ``` 21 22 ## Getting started 23 24 * Clone the `pachyderm` repo into a local folder 25 * In your terminal, run `git clone https://github.com/pachyderm/pachyderm` 26 * Launch the Docker Quickstart Terminal 27 * This should show up in your start menu if you search 'docker' 28 * You may need to do this any time your computer restarts 29 * Start minikube 30 * `minikube start --memory=8192mb` 31 * The memory value can be tweaked, but I found the default (1 GB) to be too low for pachyderm compilation 32 * Pull relevant docker variables into your shell 33 * `eval $(minikube docker-env --shell bash)` 34 * This is only necessary if you want to run docker commands in a shell 35 * Build pachyderm `pachd` and `worker` images 36 * Run the task `docker-build` 37 * This can be done through the "Terminal > Run Task..." option, or by hitting `ctrl-p` and typing `task docker-build` 38 * Build and install pachctl and launch a pachyderm cluster 39 * Run the task `launch-dev` 40 * If the service does not come up promptly (the script never says all the pods are ready), you should check the 'Debugging' section below. 41 42 ## Debugging 43 44 Determining the source of an error when launching a local pachyderm cluster can be difficult. Some useful commands to get you started: 45 46 * `kubectl get all` - lists resources in the 'default' namespace (where we deploy locally) 47 * `kubectl logs -p <pod>` - gets the logs from the previous attempt at running a pod (usually this is where you will find errors) 48 * `minikube logs` - gets the logs from minikube itself, this may be useful if a pod ran into a `CreateContainerError` 49 * `docker container ls` - lists recently used or in-use docker containers, can be used to get logs more directly 50 * `docker logs <container>` - gets the logs from a specific docker container 51 52 ### Past problems 53 54 For posterity's sake, here are some of the problems I've encountered when trying to get this working in Windows: 55 56 * Docker gets confused by command-line windows-style paths, it thinks the ':' is indicating a 'mode' and fails to parse. In addition, Windows (or maybe bash) seems to automatically convert unix to windows-style paths, so you should export MSYS_NO_PATHCONV=1 to prevent this. 57 * Kubernetes resource specs (specifically `hostPath`) do not work if you use a windows-style path. Instead, you must use a unix-style path where the drive letter is the first directory, e.g. '/C/path/to/file'. 58 * Etcd failed to mmap a file because it was in a directory shared with the host system. Still not sure how I fixed this because it seems to be working now? 59 60 ### Nuclear option 61 62 If your setup is completely fucked, it may be worthwhile to blow away your minikube and start over, this is pretty simple with: 63 64 ``` 65 minikube delete 66 minikube start --memory=8192mb 67 ```