github.com/pachyderm/pachyderm@v1.13.4/doc/docs/master/contributing/windows.md (about) 1 # Developing Pachyderm in Windows with VSCode 2 3 ## Install 4 5 * [go v1.15.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 * [minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/#install-minikube-using-an-installer-executable) 10 * [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) 11 * [goreleaser](https://github.com/goreleaser/goreleaser/releases) 12 * [jq](https://stedolan.github.io/jq/download/) 13 * [make](http://gnuwin32.sourceforge.net/packages/make.htm) 14 * [shellcheck](https://github.com/koalaman/shellcheck#user-content-installing) 15 16 You will need one of the following, which is used by minikube as its virtualization backend: 17 * [VirtualBox](https://www.virtualbox.org/wiki/Downloads) 18 * [HyperV](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v) 19 20 ## Configure 21 22 Add any VSCode extensions you may need for development, like `go` and `docker`. 23 24 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): 25 ``` 26 "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe", 27 ``` 28 29 ## Getting started 30 31 * Clone the `pachyderm` repo into a local folder 32 * In your terminal, run `git clone https://github.com/pachyderm/pachyderm` 33 * Launch the Docker Quickstart Terminal 34 * This should show up in your start menu if you search 'docker' 35 * You may need to do this any time your computer restarts 36 * Start minikube 37 * If using the hyperv driver: 38 * `minikube start --memory=10000mb --cpus=4 --disk-size=40000mb --driver=hyperv` 39 * If using virtualbox: 40 * `minikube start --memory=10000mb --cpus=4 --disk-size=40000mb` 41 * The memory value can be tweaked, but I found the default (1 GB) to be too low for pachyderm compilation 42 * The disk value can also be tweaked, occasionally you will have to prune the docker cache, which is responsible for most of the disk usage 43 * Pull relevant docker variables into your shell 44 * `eval $(minikube docker-env --shell bash)` 45 * This is only necessary if you want to run docker commands in a shell 46 * Build pachyderm `pachd` and `worker` images 47 * Run the task `docker-build` 48 * This can be done through the "Terminal > Run Task..." option, or by hitting `ctrl-p` and typing `task docker-build` 49 * Build and install pachctl and launch a pachyderm cluster 50 * Run the task `launch-dev` 51 * If the service does not come up promptly (the script never says all the pods are ready), you should check the 'Debugging' section below. 52 53 ## Debugging 54 55 Determining the source of an error when launching a local pachyderm cluster can be difficult. Some useful commands to get you started: 56 57 * `kubectl get all` - lists resources in the 'default' namespace (where we deploy locally) 58 * `kubectl logs -p <pod>` - gets the logs from the previous attempt at running a pod (usually this is where you will find errors) 59 * `minikube logs` - gets the logs from minikube itself, this may be useful if a pod ran into a `CreateContainerError` 60 * `docker container ls` - lists recently used or in-use docker containers, can be used to get logs more directly 61 * `docker logs <container>` - gets the logs from a specific docker container 62 63 ### Past problems 64 65 For posterity's sake, here are some of the problems I've encountered when trying to get this working in Windows: 66 67 * 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. 68 * 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'. 69 * 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? 70 71 ### Nuclear option 72 73 If your setup is completely fucked, it may be worthwhile to blow away your minikube and start over, this is pretty simple with: 74 75 ``` 76 minikube delete 77 minikube start --memory=10000mb --cpus=4 --disk-size=40000mb 78 ```