mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
docs: simplify Docker quickstart (#4257)
This commit is contained in:
+2
-2
@@ -31,8 +31,8 @@ site/**/*.typegen.ts
|
|||||||
site/build-storybook.log
|
site/build-storybook.log
|
||||||
|
|
||||||
# Build
|
# Build
|
||||||
build/
|
/build/
|
||||||
dist/
|
/dist/
|
||||||
site/out/
|
site/out/
|
||||||
|
|
||||||
*.tfstate
|
*.tfstate
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
DROP INDEX users_email_lower_idx;
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
# Audit Logs
|
# Audit Logs
|
||||||
|
|
||||||
This is an enterprise feature that allows **Admins** and **Auditors** to monitor what is happening in their deployment.
|
Audit Logs allows **Admins** and **Auditors** to monitor user operations in
|
||||||
|
their deployment.
|
||||||
|
|
||||||
## Tracked Events
|
## Tracked Events
|
||||||
|
|
||||||
This feature tracks **create, update and delete** events for the following resources:
|
We track **create, update and delete** events for the following resources:
|
||||||
|
|
||||||
- GitSSHKey
|
- GitSSHKey
|
||||||
- Template
|
- Template
|
||||||
@@ -31,4 +32,4 @@ The supported filters are:
|
|||||||
|
|
||||||
## Enabling this feature
|
## Enabling this feature
|
||||||
|
|
||||||
This feature is autoenabled for all enterprise deployments. An Admin can contact us to purchase a license [here](https://coder.com/contact?note=I%20want%20to%20upgrade%20my%20license).
|
This feature is autoenabled for all enterprise deployments. Admins may contact us to purchase a license [here](https://coder.com/contact?note=I%20want%20to%20upgrade%20my%20license).
|
||||||
|
|||||||
Executable → Regular
BIN
Binary file not shown.
|
Before Width: | Height: | Size: 906 KiB After Width: | Height: | Size: 729 KiB |
+18
-39
@@ -15,54 +15,29 @@ Coder with Docker has the following advantages:
|
|||||||
|
|
||||||
1. [Install and launch Coder](../install)
|
1. [Install and launch Coder](../install)
|
||||||
|
|
||||||
You will specify `CODER_ACCESS_URL=http://localhost:7080` since we're using
|
Next, we export the `CODER_ADDRESS` and `CODER_ACCESS_URL` environment
|
||||||
local Docker workspaces exclusively. `CODER_ACCESS_URL` is the external URL
|
variables. We can use localhost for the Access URL since the workspaces
|
||||||
to access Coder. The rest of the Docker quickstart guide will assume that
|
all run on the same machine. `CODER_ADDRESS` is where coder server binds
|
||||||
this is your Access URL.
|
while `CODER_ACCESS_URL` is where it's accessed. We use `:7080` to bind
|
||||||
|
to all interfaces.
|
||||||
You will also specify `CODER_ADDRESS=0.0.0.0:7080` which is the address to
|
|
||||||
serve the API and dashboard.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
coder server --address $CODER_ADDRESS --access-url $CODER_ACCESS_URL
|
$ export CODER_ADDRESS=:7080
|
||||||
|
$ export CODER_ACCESS_URL=http://localhost:7080
|
||||||
|
$ coder server --address $CODER_ADDRESS --access-url $CODER_ACCESS_URL
|
||||||
```
|
```
|
||||||
|
|
||||||
1. Run `coder login http://localhost:7080` in a new terminal and follow the
|
1. Run `coder login http://localhost:7080` in a new terminal and follow the
|
||||||
interactive instructions to create your user.
|
interactive instructions to create your user.
|
||||||
|
|
||||||
1. Pull the example template:
|
1. Pull the "Docker" example template using the interactive `coder templates init`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
echo "docker" | coder templates init
|
$ coder templates init
|
||||||
cd docker
|
$ cd docker
|
||||||
# You should see a `main.tf` file in this directory
|
|
||||||
```
|
```
|
||||||
|
|
||||||
1. Open up `main.tf` in your preferred editor to edit the images
|
1. Push up the template with `coder templates create`
|
||||||
|
|
||||||
You can skip this step if you're fine with our default, generic OS images.
|
|
||||||
|
|
||||||
Search for the following section in `main.tf`:
|
|
||||||
|
|
||||||
```hcl
|
|
||||||
...
|
|
||||||
variable "docker_image" {
|
|
||||||
description = "Which Docker image would you like to use for your workspace?"
|
|
||||||
# The codercom/enterprise-* images are only built for amd64
|
|
||||||
default = "codercom/enterprise-base:ubuntu"
|
|
||||||
validation {
|
|
||||||
condition = contains(["codercom/enterprise-base:ubuntu", "codercom/enterprise-node:ubuntu",
|
|
||||||
"codercom/enterprise-intellij:ubuntu", "codercom/enterprise-golang:ubuntu"], var.docker_image)
|
|
||||||
error_message = "Invalid Docker image!"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
And edit the strings in `condition = contains([...])` and `default = ...`
|
|
||||||
with your preferred images.
|
|
||||||
|
|
||||||
1. Push up the template to Coder with `coder templates create`
|
|
||||||
1. Open the dashboard in your browser (http://localhost:7080) to create your
|
1. Open the dashboard in your browser (http://localhost:7080) to create your
|
||||||
first workspace:
|
first workspace:
|
||||||
|
|
||||||
@@ -72,16 +47,20 @@ Coder with Docker has the following advantages:
|
|||||||
|
|
||||||
<img src="../images/quickstart/docker/create-workspace.png">
|
<img src="../images/quickstart/docker/create-workspace.png">
|
||||||
|
|
||||||
Now wait a few moments for the workspace to build... After the first build
|
Now wait a few moments for the workspace to build... After the first build,
|
||||||
the image is cached and subsequent builds will take a few seconds.
|
the image is cached and subsequent builds will take a few seconds.
|
||||||
|
|
||||||
1. All done!
|
1. Your workspace is ready to go!
|
||||||
|
|
||||||
<img src="../images/quickstart/docker/ides.png">
|
<img src="../images/quickstart/docker/ides.png">
|
||||||
|
|
||||||
Open up a web application or [SSH in](../ides.md#ssh-configuration).
|
Open up a web application or [SSH in](../ides.md#ssh-configuration).
|
||||||
|
|
||||||
|
1. If you want to modify the Docker image or template, edit the files in the
|
||||||
|
previously created `./docker` directory, then run `coder templates push`.
|
||||||
|
|
||||||
## Next Steps
|
## Next Steps
|
||||||
|
|
||||||
|
- [Port-forward](../networking/port-forwarding.md.md)
|
||||||
- [Learn more about template configuration](../templates.md)
|
- [Learn more about template configuration](../templates.md)
|
||||||
- [Configure more IDEs](../ides/web-ides.md)
|
- [Configure more IDEs](../ides/web-ides.md)
|
||||||
|
|||||||
@@ -9,39 +9,9 @@ tags: [local, docker]
|
|||||||
To get started, run `coder templates init`. When prompted, select this template.
|
To get started, run `coder templates init`. When prompted, select this template.
|
||||||
Follow the on-screen instructions to proceed.
|
Follow the on-screen instructions to proceed.
|
||||||
|
|
||||||
## Adding/removing images
|
## Editing the image
|
||||||
|
|
||||||
After building and pushing an image to an image registry (e.g., DockerHub), edit
|
Edit the `Dockerfile` and run `coder templates push` to update workspaces.
|
||||||
the template to make the image available to users:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# Open the template
|
|
||||||
vim main.tf
|
|
||||||
```
|
|
||||||
|
|
||||||
Modify your file to match the following:
|
|
||||||
|
|
||||||
```diff
|
|
||||||
variable "docker_image" {
|
|
||||||
description = "What Docker image would you like to use for your workspace?"
|
|
||||||
default = "codercom/enterprise-base:ubuntu"
|
|
||||||
validation {
|
|
||||||
condition = contains(["codercom/enterprise-base:ubuntu", "codercom/enterprise-node:ubuntu",
|
|
||||||
- "codercom/enterprise-intellij:ubuntu"], var.docker_image)
|
|
||||||
+ "codercom/enterprise-intellij:ubuntu", "codercom/enterprise-golang:ubuntu"], var.docker_image)
|
|
||||||
error_message = "Invalid Docker image!"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Update the template:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
coder template push docker
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also remove images from the validation list. Workspaces using older template versions will continue using
|
|
||||||
the removed image until you update the workspace to the latest version.
|
|
||||||
|
|
||||||
## code-server
|
## code-server
|
||||||
|
|
||||||
@@ -49,30 +19,6 @@ the removed image until you update the workspace to the latest version.
|
|||||||
resource block. The `coder_app` resource is defined to access `code-server` through
|
resource block. The `coder_app` resource is defined to access `code-server` through
|
||||||
the dashboard UI over `localhost:13337`.
|
the dashboard UI over `localhost:13337`.
|
||||||
|
|
||||||
## Updating images
|
|
||||||
|
|
||||||
To reduce drift, we recommend versioning images in your registry by creating tags. To update the image tag in the template:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
variable "docker_image" {
|
|
||||||
description = "What Docker image would you like to use for your workspace?"
|
|
||||||
default = "codercom/enterprise-base:ubuntu"
|
|
||||||
validation {
|
|
||||||
- condition = contains(["my-org/base-development:v1.1", "myorg-java-development:v1.1"], var.docker_image)
|
|
||||||
+ condition = contains(["my-org/base-development:v1.1", "myorg-java-development:v1.2"], var.docker_image)
|
|
||||||
|
|
||||||
error_message = "Invalid Docker image!"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Optional: Update workspaces to the latest template version:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
coder ls
|
|
||||||
coder update [workspace name]
|
|
||||||
```
|
|
||||||
|
|
||||||
## Extending this template
|
## Extending this template
|
||||||
|
|
||||||
See the [kreuzwerker/docker](https://registry.terraform.io/providers/kreuzwerker/docker) Terraform provider documentation to
|
See the [kreuzwerker/docker](https://registry.terraform.io/providers/kreuzwerker/docker) Terraform provider documentation to
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
FROM ubuntu
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y curl wget git vim golang
|
||||||
@@ -6,7 +6,7 @@ terraform {
|
|||||||
}
|
}
|
||||||
docker = {
|
docker = {
|
||||||
source = "kreuzwerker/docker"
|
source = "kreuzwerker/docker"
|
||||||
version = "~> 2.20.2"
|
version = "~> 2.22"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -55,24 +55,24 @@ resource "coder_app" "code-server" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
variable "docker_image" {
|
|
||||||
description = "Which Docker image would you like to use for your workspace?"
|
|
||||||
# The codercom/enterprise-* images are only built for amd64
|
|
||||||
default = "codercom/enterprise-base:ubuntu"
|
|
||||||
validation {
|
|
||||||
condition = contains(["codercom/enterprise-base:ubuntu", "codercom/enterprise-node:ubuntu",
|
|
||||||
"codercom/enterprise-intellij:ubuntu", "codercom/enterprise-golang:ubuntu"], var.docker_image)
|
|
||||||
error_message = "Invalid Docker image!"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
resource "docker_volume" "home_volume" {
|
resource "docker_volume" "home_volume" {
|
||||||
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-home"
|
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-home"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
resource "docker_image" "main" {
|
||||||
|
name = "coder-${data.coder_workspace.me.id}"
|
||||||
|
build {
|
||||||
|
path = "./build"
|
||||||
|
}
|
||||||
|
triggers = {
|
||||||
|
dir_sha1 = sha1(join("", [for f in fileset(path.module, "build/*") : filesha1(f)]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
resource "docker_container" "workspace" {
|
resource "docker_container" "workspace" {
|
||||||
count = data.coder_workspace.me.start_count
|
count = data.coder_workspace.me.start_count
|
||||||
image = var.docker_image
|
image = docker_image.main.name
|
||||||
# Uses lower() to avoid Docker restriction on container names.
|
# Uses lower() to avoid Docker restriction on container names.
|
||||||
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
|
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
|
||||||
# Hostname makes the shell more user friendly: coder@my-workspace:~$
|
# Hostname makes the shell more user friendly: coder@my-workspace:~$
|
||||||
@@ -80,7 +80,12 @@ resource "docker_container" "workspace" {
|
|||||||
dns = ["1.1.1.1"]
|
dns = ["1.1.1.1"]
|
||||||
# Use the docker gateway if the access URL is 127.0.0.1
|
# Use the docker gateway if the access URL is 127.0.0.1
|
||||||
command = [
|
command = [
|
||||||
"sh", "-c", replace(coder_agent.main.init_script, "localhost", "host.docker.internal")]
|
"sh", "-c",
|
||||||
|
<<EOT
|
||||||
|
trap '[ $? -ne 0 ] && echo === Agent script exited with non-zero code. Sleeping infinitely to preserve logs... && sleep infinity' EXIT
|
||||||
|
${replace(coder_agent.main.init_script, "localhost", "host.docker.internal")}
|
||||||
|
EOT
|
||||||
|
]
|
||||||
env = ["CODER_AGENT_TOKEN=${coder_agent.main.token}"]
|
env = ["CODER_AGENT_TOKEN=${coder_agent.main.token}"]
|
||||||
host {
|
host {
|
||||||
host = "host.docker.internal"
|
host = "host.docker.internal"
|
||||||
@@ -92,13 +97,3 @@ resource "docker_container" "workspace" {
|
|||||||
read_only = false
|
read_only = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "coder_metadata" "container_info" {
|
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
resource_id = docker_container.workspace[0].id
|
|
||||||
|
|
||||||
item {
|
|
||||||
key = "image"
|
|
||||||
value = var.docker_image
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user