Commit graph

173 commits

Author SHA1 Message Date
Tim Abell
9545538106
Add docker-compose profile support
Implements the design captured in docs/adr/0001-docker-compose-profile-support.md
(jesseduffield/lazydocker#423). Profiles render as pseudo-projects in the
project panel; selecting one filters the services and containers panels to
the services that activate with that profile, and Up/Down/Restart on the
selection use docker compose --profile X invocations.

Key choices:

- Profile is a flag on Project (IsProfile bool), not a new type. Avoids a
  generic-type split across the SideListPanel and CommandObject.

- Reuse existing command templates (Up, Down, DownWithVolumes, Restart,
  AllLogs, DockerComposeConfig). NewCommandObject appends --profile X when
  a profile context is set, so no separate UpProfile/DownProfile/... family
  is needed. Adds a new Restart template (master had no project-level
  restart at all).

- Discovery via 'docker compose config --profiles' and
  'docker compose --profile X config --services', cached on DockerCommand
  for the session. Soft-fails on error (logs once, caches empty) so the UI
  degrades to "no profile rows" rather than popping an error.

- Per-profile service filtering uses the local project and the profile's
  service set (default services + profile-X services, per docker semantics).

- No new keybinding for project/profile restart in this PR; handler exists
  for follow-up discussion.

- New unit tests cover NewCommandObject --profile injection, GetProfiles
  caching, GetProfileServices caching, and the soft-fail path.

fixes: https://github.com/jesseduffield/lazydocker/issues/423

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 14:48:50 +01:00
Jesse Duffield
f5ff116af9 Use IsProjectScoped at remaining call sites + add test
Addresses Copilot review comments on PR #797:
- Containers panel title, initial focus selection, and the local-project
  inclusion in getDiscoveredProjects all switched from
  InDockerComposeProject to IsProjectScoped, so they stay consistent
  when -p is given outside a compose dir.
- Adds TestIsProjectScoped table test covering all four combinations.

InDockerComposeProject is still used at the call sites that genuinely
require a compose dir (renderDockerComposeConfig, GetServices).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 12:47:30 +10:00
Jesse Duffield
3974f6fec1 Support -p flag and DRY up code 2026-04-19 12:16:55 +10:00
Jesse Duffield
26ce871368 Improve projects support 2026-03-15 14:53:48 +11:00
Jesse Duffield
3c9d134d05 Fix version lock issue 2026-01-17 17:03:34 +11:00
ManManavadaria
43db69da00 Fix panic: validate Names slice length and use containerID as container name if Names slice is empty in container summary 2025-11-27 19:54:53 +05:30
Jesse Duffield
826f0293f1 Fix types 2025-11-14 21:20:28 +11:00
Jesse Duffield
992c138844 Clean up 2025-11-14 20:59:23 +11:00
Md. Asaduzzaman
c8d2fbdfdc fix: Update Docker client to support API version 1.52
- Upgrade Docker client from v27.1.1 to v28.5.2
- Update hardcoded API version from 1.25 to 1.52
- Enable API version negotiation for better compatibility
- Fix compatibility with Docker Engine 29.0.0 and newer versions

Resolves issues with lazydocker not working with latest Docker clients.
2025-11-12 08:49:01 +06:00
Jesse Duffield
df6c8c196e Use 'docker compose' by default
We now fall back to 'docker-compose' if need be
2024-07-21 21:32:03 +10:00
Jesse Duffield
0849b800ff
Merge pull request #561 from thaJeztah/update_docker
go.mod: github.com/docker/docker, docker/cli v27.0.3
2024-07-21 20:49:16 +10:00
Jesse Duffield
c73b3f7cc0
Merge pull request #552 from peauc/feature/issue-493
fix lazydocker breaking when having default context in config
2024-07-21 20:15:19 +10:00
Sebastiaan van Stijn
77a4de4819
go.mod: github.com/docker/docker, docker/cli v27.0.3
Update to v27.0, and remove uses of deprecated types.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-15 11:44:09 +02:00
Sebastiaan van Stijn
2d16389add
go.mod: github.com/docker/docker, docker/cli v26.1.4
Update to v26.1, and remove uses of deprecated types.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-15 11:37:10 +02:00
Sebastiaan van Stijn
0232610967
go.mod: github.com/docker/docker, docker/cli v25.0.5
Update to v25.0, and remove uses of deprecated types.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-15 11:25:11 +02:00
Sebastiaan van Stijn
6f85b653d4
go.mod: github.com/docker/docker, docker/cli v24.0.7
Update to v24.0, and remove uses of deprecated types.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-15 11:04:43 +02:00
Sebastiaan van Stijn
966ad05338
go.mod: github.com/docker/docker, docker/cli v23.0.10
Update to v23.0, and remove uses of deprecated types.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2024-07-15 11:02:03 +02:00
Clément PÉAU
f6c044d74f fix lazydocker breaking when having default docker explicitly mentioned in docker config 2024-06-18 23:24:00 +02:00
Jesse Duffield
06ab7b77b1
Merge pull request #511 from rajiv-k/docker-host-ssh
fix: Properly support remote docker daemon over ssh
2024-05-30 23:15:50 +10:00
Jesse Duffield
bca15cf6b1 Get container details immediately after getting containers
Previously we separately obtained container details every second,
meaning there was a second of not knowing whether a given container was
using a TTY or not, and that meant we were using the wrong streaming
method for logs, which led to a black screen.
2024-05-26 12:19:17 +10:00
Rajiv Kushwaha
42b7ba18ea
fix: Properly support remote docker daemon over ssh 2024-02-14 14:46:56 +05:30
Jesse Duffield
e860416ee4 Gracefully check for docker config
It's fine if the file doesn't exist
2023-10-12 17:42:34 +11:00
Jesse Duffield
2dda39dff0 Appease linter 2023-10-10 17:39:09 +11:00
Jesse Duffield
966570ce6c Forward env vars to commands
We want to forward env vars to commands just because it's good practice,
and probably enables things that previously weren't possible.
2023-10-09 22:03:40 +11:00
Rajiv Kushwaha
d2fa5e9e9c
feat(docker): Honor the host specified in current docker context (#464) 2023-10-09 17:13:22 +11:00
Dawid Dziurla
0066c1c76c
os: fix linter issue 2023-03-29 15:55:53 +02:00
Tony-Sol
ce95ddea2a
Add networks panel 2023-03-06 01:25:23 +03:00
Jesse Duffield
17fcdb2b20
Merge pull request #407 from nakaakist/fix-service-id
Resolves https://github.com/jesseduffield/lazydocker/issues/402
2022-12-13 21:11:53 +11:00
Gustavo Andrioli
d77b895319 Wrap custom commands on shell 2022-12-01 19:04:29 +11:00
Nariyuki Saito
8871edc1a0 use service name as service ID 2022-11-24 00:05:06 +09:00
Jesse Duffield
52040d1d99 better way of rendering to the main view 2022-11-10 19:14:12 +11:00
Jesse Duffield
02a03ed18d move container stats stuff into presentation layer 2022-11-09 21:21:36 +11:00
Jesse Duffield
a87b698761 move things into presentation package 2022-11-09 21:21:36 +11:00
Jesse Duffield
95cee378cb restore sorting tests 2022-11-09 21:21:36 +11:00
Jesse Duffield
aab8bcfbcc add deadlock detection for debug mode 2022-11-09 21:21:35 +11:00
Jesse Duffield
b6b5373999 fix some glitchiness caused by indeterminate sorting 2022-11-09 21:21:35 +11:00
Jesse Duffield
60df208924 convert menu panel to use new struct 2022-11-09 21:21:35 +11:00
Jesse Duffield
158ef68372 convert project panel to use new struct 2022-11-09 21:21:35 +11:00
Jesse Duffield
5aea90c08b convert containers panel to use new struct 2022-11-09 21:21:35 +11:00
Jesse Duffield
a4b4fee868 convert volumes panel to use new struct 2022-11-09 21:21:35 +11:00
Jesse Duffield
79a58c8d48 convert services panel to use new struct 2022-11-09 21:21:35 +11:00
Jesse Duffield
cb38e48add create filtered list struct 2022-11-09 21:21:35 +11:00
Jesse Duffield
be347a7216 POC filtering on images panel 2022-11-09 21:21:35 +11:00
Jesse Duffield
10919b4dfb deterministically display container ports 2022-10-21 13:29:50 -07:00
Jesse Duffield
9ec03eef45 ignore items with configured substrings 2022-10-10 21:00:41 -07:00
Jesse Duffield
2f52bd04e6 properly display unforwarded port 2022-10-10 20:10:36 -07:00
Jesse Duffield
195ccf41ce allow upping a service 2022-10-10 19:19:07 -07:00
Jesse Duffield
ec8dfbac06 sort volumes first on whether they have labels and secondly on name 2022-10-10 13:45:25 -07:00
Jesse Duffield
a9d1694853 more concise showing of ports 2022-10-09 18:10:45 -07:00
Jesse Duffield
5988ec5745 display ports against container and service 2022-10-09 18:03:57 -07:00