Skip to content

Move to using ubuntu as base with feature already installed for devcontainer #277

Open

Description

@coretl

At the moment we:

  • Use python:3.xx as the base container
  • Make a venv
  • Install into it and use that
  • Apply the bash-config feature on top

This means that vscode is taking up to 30s adding in the feature every time. We were thinking of putting the feature in the base container for epics-containers but publishing this for multiple python bases would be prohibitive for the copier template.

However with uv we now have a different option:

  • Publish an ubuntu LTS derived devcontainer with uv, bash and zsh, and the bash-config feature installed
  • Use it for both python-copier-template and epics-containers
  • Get uv to manage the version of python

This should allow us to have a much better out of the box experience by pulling a single rarely changing base image that will be used for many purposes. The only downside is that every devcontainer.json will need to provide the mount of ${localEnv:HOME}/.config/bash-config to do persistent history, but as we use copier that is easy to arrange for.

As discussed with @gilesknap @callumforrester

Activity

  1. callumforrester commented on Jul 2, 2025

    @callumforrester
    Contributor

    Presume this is pending the merge of #248?

  2. gilesknap commented on Jul 9, 2025

    @gilesknap
    Contributor

    If we make the bash-config feature create the folder /bash-config if it does not exist then it would always work even if the mount was not supplied, with the only downside being that eternal history would be local to the container instance only.

    At present the feature crashes if it does not find that folder (AFAIR)

  3. coretl commented on Jul 9, 2025

    @coretl
    ContributorAuthor

    I've trialled this in bluesky/ophyd-async#949

    Devcontainer working, but haven't looked at the CI yet

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions