Skip to content

Unified standards for 2U Dockerfiles #112

@timmc-edx

Description

@timmc-edx

Currently we have Dockerfiles that use a variety of approaches to set up an image, and this creates a number of discrepancies in how our services work and are deployed. We should consider standardizing some aspects of these files, documenting them in this repo and then using that to simplify our helm chart and argocd configs.

Aspects to look at:

  • Names of targets (base, dev, prod)
  • Name of the application user (app, service, etc.)
    • Possibly the UID as well, as our helm chart makes assumptions about user 1000 being the one to use (note that the ubuntu 24.04 base image creates a user ubuntu/1000 by default, but earlier versions do not)
  • Where the application virtualenv is located
  • Whether the PATH is set up for all targets to include the virtualenv
  • Whether there is even a CMD specified, since we end up overriding it in our helm chart and in devstack anyhow
  • Internal and external port
  • What system packages are installed for dev vs. prod
  • How image size is managed (cache layer optimizations), especially with regard to system and Python packages
  • Locale management
  • Whether we want a 2U base image (e.g. could set up things like locales, app user, virtualenv)

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