Repository navigation
Expand file tree
/
Copy pathcompose.yml
More file actions
107 lines (103 loc) · 3.88 KB
/
Copy pathcompose.yml
File metadata and controls
107 lines (103 loc) · 3.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# Local development environment for VIP Playwright tests.
#
# Spins up Workbench, Connect, and Package Manager with local password auth
# so you can iterate on Playwright selectors and run UI tests without a
# remote deployment.
#
# Usage:
# just compose-up # start Workbench only (default service)
# just compose-up workbench # start only Workbench (explicit)
# docker compose --profile full up -d # start Workbench + Connect + Package Manager
# just test-local # start Workbench + run tests
#
# License keys:
# Set these environment variables (or add them to .env):
# PWB_LICENSE - Posit Workbench license key
# PCT_LICENSE - Posit Connect license key
# PPM_LICENSE - Posit Package Manager license key
#
# Image versions:
# Image tags default to :latest for convenience. To pin versions for
# reproducible test environments, create a .env file (see .env.example):
# PWB_VERSION=2026.09.0
# PCT_VERSION=2026.09.0
# PPM_VERSION=2026.09.0
#
# Limitations:
# - K8s-specific features (session capacity with resource profiles,
# cluster commands) cannot be tested locally.
# - Trial licenses may limit features or session duration.
services:
workbench:
image: ghcr.io/posit-dev/workbench:${PWB_VERSION:-latest}
ports:
- "127.0.0.1:8787:8787"
environment:
PWB_LICENSE: ${PWB_LICENSE:-}
# The image provisions the test account itself: /usr/local/bin/startup.sh
# (run by the supervisord `rstudio-workbench` program) creates
# PWB_TESTUSER at PWB_TESTUSER_UID, defaulting to 10000, before rserver
# starts. This service used to bind-mount docker/workbench/startup.sh at
# /etc/cont-init.d/99-vip-setup instead, which never ran: no Workbench
# image has a cont-init.d/s6 hook, not the current one and not the frozen
# 2022-08-19 rstudio `:latest` it replaced, so local Workbench came up
# with no vip_test account at all. Keep the VIP_TEST_* names as the
# developer-facing knob, since that is what vip.toml.local and the
# product tests read on the host side.
PWB_TESTUSER: ${VIP_TEST_USERNAME:-vip_test}
PWB_TESTUSER_PASSWD: ${VIP_TEST_PASSWORD:-vip_test_password}
WORKBENCH_JUPYTER_PATH: /usr/local/bin/jupyter
volumes:
- workbench-home:/home
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8787"]
interval: 10s
timeout: 5s
retries: 12
start_period: 30s
connect:
image: ghcr.io/posit-dev/connect:${PCT_VERSION:-latest}
# Same requirement compose.mock-idp.yml documents for this image: the
# rsandbox privilege-separation subsystem needs a privileged container.
# Without it Connect exits at startup with "Unable to execute commands
# with Applications.RunAs" (rsandbox: Operation not permitted), before it
# ever reaches licensing.
privileged: true
ports:
- "127.0.0.1:3939:3939"
environment:
PCT_LICENSE: ${PCT_LICENSE:-}
volumes:
- connect-data:/var/lib/rstudio-connect
- ./docker/connect/rstudio-connect.gcfg:/etc/rstudio-connect/rstudio-connect.gcfg:ro
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3939/__ping__"]
interval: 10s
timeout: 5s
retries: 12
start_period: 30s
profiles:
- full
- connect
packagemanager:
image: ghcr.io/posit-dev/package-manager:${PPM_VERSION:-latest}
ports:
- "127.0.0.1:4242:4242"
environment:
PPM_LICENSE: ${PPM_LICENSE:-}
volumes:
- pm-data:/var/lib/rstudio-pm
- ./docker/packagemanager/rstudio-pm.gcfg:/etc/rstudio-pm/rstudio-pm.gcfg:ro
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:4242/__ping__"]
interval: 10s
timeout: 5s
retries: 12
start_period: 30s
profiles:
- full
- packagemanager
volumes:
workbench-home:
connect-data:
pm-data: