Skip to content

Commit 2dd98c7

Browse files
authored
docs: add dogfooding guide (#3099)
1 parent 51dd1fd commit 2dd98c7

File tree

1 file changed

+108
-0
lines changed

1 file changed

+108
-0
lines changed

dogfood/guide.md

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Dogfooding Guide
2+
3+
This guide explains how to [dogfood](https://www.techopedia.com/definition/30784/dogfooding) coder for employees at Coder.
4+
5+
## How to
6+
7+
The following explains how to do certain things related to dogfooding.
8+
9+
### Dogfood using Coder's Deployment
10+
11+
1. Go to [https://dev.coder.com/templates/coder-ts](https://dev.coder.com/templates/coder-ts)
12+
1. If you don't have an account, sign in with GitHub
13+
2. If you see a dialog/pop-up, hit "Cancel" (this is because of Rippling)
14+
2. Create a workspace
15+
3. [Connect with your favorite IDE](https://coder.com/docs/coder-oss/latest/ides)
16+
4. Clone the repo: `git clone git@github.com:coder/coder.git`
17+
5. Follow the [contributing guide](https://coder.com/docs/coder-oss/latest/CONTRIBUTING)
18+
19+
### Run Coder in your Coder Workspace
20+
21+
1. Clone the Git repo `[https://github.com/coder/coder](https://github.com/coder/coder)` and `cd` into it
22+
2. Run `sudo apt update` and then `sudo apt install -y netcat`
23+
- skip this step if using the `coder` template
24+
3. Run `make bin`
25+
26+
<aside>
27+
💡 If you run into the following error:
28+
29+
```js
30+
pg_dump: server version: 13.7 (Debian 13.7-1.pgdg110+1); pg_dump version: 11.16 (Ubuntu 11.16-1.pgdg20.04+1)
31+
pg_dump: aborting because of server version mismatch
32+
```
33+
34+
Don’t fret! This is a known issue. To get around it:
35+
36+
1. Add `export DB_FROM=coderdb` to your `.bashrc` (make sure you `source ~/.bashrc`)
37+
2. Run `sudo service postgresql start`
38+
3. Run `sudo -u postgres psql` (this will open the PostgreSQL CLI)
39+
4. Run `postgres-# alter user postgres password 'postgres';`
40+
5. Run `postgres-# CREATE DATABASE coderdb;`
41+
6. Run `postgres-# grant all privileges on database coderdb to postgres;`
42+
7. Run `exit` to exit the PostgreSQL terminal
43+
8. Try `make bin` again.
44+
</aside>
45+
46+
4. Run `./scripts/develop.sh` which will start _two_ separate processes:
47+
1. `[http://localhost:3000](http://localhost:3000)` — backend API server 👈 Backend devs will want to talk to this
48+
2. `[http://localhost:8080](http://localhost:8080)`Node.js dev server 👈 Frontend devs will want to talk to this
49+
5. Ensure that you’re logged in: `./scripts/coder-dev.sh list` — should return no workspace. If this returns an error, double-check the output of running `scripts/develop.sh`.
50+
6. A template named `docker-amd64` (or `docker-arm64` if you’re on ARM) will have automatically been created for you. If you just want to create a workspace quickly, you can run `./scripts/coder-dev.sh create myworkspace -t docker-amd64` and this will get you going quickly!
51+
7. To create your own template, you can do: `./scripts/coder-dev.sh templates init` and choose your preferred option.
52+
For example, choosing “Develop in Docker” will create a new folder `docker` that contains the bare bones for starting a Docker workspace template.
53+
Then, enter the folder that was just created and customize as you wish.
54+
<aside>
55+
💡 **For all Docker templates:**
56+
This step depends on whether you are developing on a Coder v1 workspace, versus a Coder v2 workspace, versus a VM, versus locally. In any case, check the output of the command `docker context ls` to determine where your Docker daemon is listening. Then open `./docker/main.tf` and check inside the block `provider "docker"` that the variable `"host"` is set correctly.
57+
58+
</aside>
59+
60+
## Troubleshooting
61+
62+
### My Docker containers keep failing and I have no idea what's going on!
63+
64+
```shell
65+
✔ Queued [236ms]
66+
✔ Setting up [5ms]
67+
⧗ Starting workspace
68+
Terraform 1.1.9
69+
coder_agent.dev: Plan to create
70+
docker_volume.home_volume: Plan to create
71+
docker_container.workspace[0]: Plan to create
72+
Plan: 3 to add, 0 to change, 0 to destroy.
73+
coder_agent.dev: Creating...
74+
coder_agent.dev: Creation complete after 0s [id=b2f132bd-9af1-48a7-81dc-187a18ee00d5]
75+
docker_volume.home_volume: Creating...
76+
docker_volume.home_volume: Creation complete after 0s [id=coder-maf-mywork-root]
77+
docker_container.workspace[0]: Creating...
78+
docker_container.workspace[0]: Creation errored after 0s
79+
Error: container exited immediately
80+
81+
✘ Starting workspace [2045ms]
82+
terraform apply: exit status 1
83+
Run 'coder create --help' for usage.
84+
```
85+
86+
Check the output of `docker ps -a`
87+
88+
- If you see a container with the status `Exited` run `docker logs <container name>` and see what the issue with the container output is
89+
90+
Enable verbose container logging for Docker:
91+
92+
```shell
93+
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.orig
94+
sudo cat > /etc/docker/daemon.json << EOF
95+
{
96+
"debug": true,
97+
"log-driver": "journald"
98+
}
99+
EOF
100+
sudo systemctl restart docker
101+
# You should now see container logs in journald.
102+
# Try starting a workspace again and see what the actual error is!
103+
sudo journalctl -u docker -f
104+
```
105+
106+
### Help! I'm still blocked
107+
108+
Post in the #dogfood Slack channel internally or open a Discussion on GitHub and tag @jsjoeio or @bpmct

0 commit comments

Comments
 (0)