Giter Club home page Giter Club logo

base's Introduction

containerbase base

Build status Docker Image Size (latest) GitHub release (latest SemVer) Licence: MIT codecov

This repository is the source for the Docker images containerbase/base and ghcr.io/containerbase/base. The commits to the main branch are automatically built and published.

Local development

Install a recent version of:

You must first build the CLI, before you build the Docker images.

> pnpm install
> pnpm build

Base image

If you make changes to the src folder or the Dockerfile, you must:

  1. run pnpm build
  2. rebuild the containerbase/base image
pnpm build
docker buildx bake

You can use the following command to ignore the remote cache for local testing. This may speed up your local builds.

docker buildx bake  --set *.cache-from=

Test images

To run one of the tests use the following command, it will run the Java tests from test/java.

TAG=java docker buildx bake test

For other test images see the test folder.

Distro test images

Noble

To run the noble tests use the following command, it will run the test from test/Dockerfile.noble.

TAG=noble docker buildx bake test-distro

Jammy

To run the jammy tests use the following command, it will run the test from test/Dockerfile.jammy.

TAG=jammy docker buildx bake test-distro

Apt proxy

You can configure an apt proxy for the build by setting an APT_HTTP_PROXY argument. For example: docker build --build-arg APT_HTTP_PROXY=https://apt.company.com . -t my/image

You can export APT_HTTP_PROXY to your local env and our build tools will use your apt proxy for the http sources.

Custom base image

To use a custom base image with containerbase/base read the custom-base-image docs.

Custom Root CA Certificates

To add custom root certificates to the containerbase/base base image read the custom-root-ca docs.

Temporary disable tool installer

To temporarily disable or skip some tool installer: set the build arg IGNORED_TOOLS to a comma separated case-insensitive tool names list.

For example, the following Dockerfile skips the installation of powershell and node:

FROM containerbase/base

ARG IGNORED_TOOLS=powershell,node


# renovate: datasource=github-releases packageName=PowerShell/PowerShell
RUN install-tool powershell v7.1.3

# renovate: datasource=docker versioning=docker
RUN install-tool node 20.9.0

# renovate: datasource=github-releases packageName=moby/moby
RUN install-tool docker 20.10.7

Custom registries

You can replace the default registries used to download the tools. Read the custom-registries docs for more details.

Logging

The new CLI has some new logging features. You can change the default info log level by setting the CONTAINERBASE_LOG_LEVEL1 environment variable. If CONTAINERBASE_DEBUG is set to true the CLI will automatically set the log level to debug, if not explicit set.

You can also log to a .ndjson file via CONTAINERBASE_LOG_FILE and CONTAINERBASE_LOG_FILE_LEVEL environment variables. The default value for CONTAINERBASE_LOG_FILE_LEVEL is debug.

Footnotes

  1. https://getpino.io/#/docs/api?id=level-string

base's People

Contributors

andrein avatar aschleifer avatar cdaringe avatar chumper avatar danports avatar dominik-bln avatar gjasny avatar honkinggoose avatar jamiemagee avatar janrotter avatar korosuke613 avatar mbudnek avatar mrtc0 avatar nikolaik avatar rarkins avatar renovate-bot avatar renovate[bot] avatar rvarun11 avatar secustor avatar sheerlox avatar thomaszub avatar tobiaszsml avatar viceice avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

base's Issues

Sign container images

Signing generated containers allows end users to verify that any container they pull actually came from us. With GitHub Actions new support for OIDC 1 it's now possible to use cosign 2 to sign containers in GitHub Actions without any human interaction or storing long-lived keys as secrets.

Here's a demo someone put together explaining how to set it all up: https://github.com/chrisns/cosign-keyless-demo

Footnotes

  1. https://github.blog/changelog/2021-10-27-github-actions-secure-cloud-deployments-with-openid-connect/

  2. https://github.com/sigstore/cosign

Migrate test repos to this org

We should use copy all test repositories into this org so that we don't depend on @renovate-testing's repos.

I'm thinking to use a prefix convention like testing-, e.g. github.com/containerbase/testing-bundler, etc.

Incorporate apt upgrades for security updates

Ubuntu base images are only updated periodically, and may have vulnerabilities in packages which are fixed in the apt repository.

How can we balance such upgrading while also retaining some caching ability?

Example:

ubuntu:20.04 (ubuntu 20.04)
===========================
Total: 2 (UNKNOWN: 0, LOW: 1, MEDIUM: 1, HIGH: 0, CRITICAL: 0)

+-------------+------------------+----------+-------------------+------------------+
|   LIBRARY   | VULNERABILITY ID | SEVERITY | INSTALLED VERSION |  FIXED VERSION   |
+-------------+------------------+----------+-------------------+------------------+
| libgcrypt20 | CVE-2021-40528   | MEDIUM   | 1.8.5-5ubuntu1    | 1.8.5-5ubuntu1.1 |
+             +------------------+----------+                   +                  +
|             | CVE-2021-33560   | LOW      |                   |                  |
+-------------+------------------+----------+-------------------+------------------+

Meanwhile the same image with RUN apt-get update && apt-get -y upgrade && rm -rf /var/lib/apt/lists/* results in no vulnerabilities.

Ref: https://pythonspeed.com/articles/security-updates-in-docker/

Shell check

At shell check to ci. Use husky and lint-staged for pre-commit git hook to validate changed files

/Cc @Chumper

Automatically configure Node.js for custom certificates

If custom certificates are provided, we should automatically configure Node.js to use them. By default they use their own bundled CA certs, so I think would ignore any custom certs added to Linux.

Should we configure --use-openssl-ca or SSL_CERT_DIR or SSL_CERT_FILE?

Add Bazelisk

Hi folks,

We are using renovate with some Bazel repositories and it would be really helpful to install https://github.com/bazelbuild/bazelisk onto this default docker image.

I want to gauge your thought before putting our a PR

The installation will looks roughly like this but im not quite sure how install-tool works

RUN curl -fLo /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/download/v1.6.1/bazelisk-linux-amd64 && \
    chown root:root /usr/local/bin/bazel && \
    chmod 0755 /usr/local/bin/bazel

renovatebot/docker-buildpack#51 (comment)

Support `IGNORED_TOOLS` arg

We should support a IGNORED_TOOLS build argument, which will be a comma-separated list. If the list is non-empty, any tool within should be skipped for install-tool.

Example: IGNORED_TOOLS=PIPENV,HELM

Maybe we can make it case-insensitive? e.g. allowing IGNORED_TOOLS=pipenv,helm too.

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Location: renovate.json
Error type: Invalid JSON (parsing failed)
Message: Syntax error: expecting end of expression or separator near "node

`java`: first try jre then jdk

JRE only exists for LTS releases

  • java should first try jre and fallback to jdk
  • java-jre should install jre and fail if missing
  • java-jdk should always install jdk and fail if missing

Erlang broken

image

This maybe affects anyone building with buildpack? :(

Use portable shebangs

All of our tool install scripts (except nix 😉) use the #!/bin/bash shebang, but these aren't portable, and aren't the best practice:tm:. Changing these to #!/usr/bin/env bash is a simple fix.

`npm --version` fails during `install-tool npm`

Reproduction:

❯ docker run --rm renovate/renovate bash -c "install-tool npm 6.14.15 || true && echo 'Installed npm version is:' && npm --version" 
Installing tool npm v6.14.15
/home/ubuntu/npm/6.14.15/bin/npm -> /home/ubuntu/npm/6.14.15/lib/node_modules/npm/bin/npm-cli.js
/home/ubuntu/npm/6.14.15/bin/npx -> /home/ubuntu/npm/6.14.15/lib/node_modules/npm/bin/npx-cli.js
+ [email protected]
added 437 packages from 891 contributors in 20.191s
npm ERR! It doesn't look like npm is installed.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/ubuntu/.npm/_logs/2021-12-08T09_01_28_815Z-debug.log
Installed npm version is:
6.14.15

Write installed version to a file

It would be useful if we can write the installed version to e.g. /home/user/npm/version, /home/user/node/version, etc (or wherever is most appropriate). That way an application like Renovate can look for a such a file to know in advance what's been installed.

When poetry is installed, Docker image has high UID value, unable to start in some runtimes

We use the renovate/renovate docker image. Recently that image started to fail to start in CircleCI due to:

CircleCI was unable to start the container because of a userns remapping failure in Docker.

This typically means the image contains files with UID/GID values that are higher than Docker and CircleCI can use.

Checkout our docs https://circleci.com/docs/2.0/high-uid-error/ to learn how to fix this problem.
Original error: CircleCI was unable to start the container because of a userns remapping failure in Docker.

This typically means the image contains files with UID/GID values that are higher than Docker and CircleCI can use.

Checkout our docs https://circleci.com/docs/2.0/high-uid-error/ to learn how to fix this problem.
Original error: failed to register layer: Error processing tar file(exit status 1): Container ID 1407182137 cannot be mapped to a host ID

Following the instructions on that referenced page in error, I did:

$ docker run --rm -it --entrypoint bash renovate/renovate

(in container): $ find / \( -uid 1407182137 \)  -ls 2>/dev/null
  8000928      8 -rw-r--r--   1 1407182137 1059092950     7444 Aug 19 16:55 /usr/local/poetry/1.1.8/lib/poetry/_vendor/py2.7/backports/entry_points_selectable.py

And this file appears to be installed from install-tools poetry in this repo. I hope this is the right place for this issue.

Automatic runtime install of tools

An even more advanced approach here would be that we create our own tools directory in $PATH, e.g. containing node, poetry, gradle, etc. But each is in fact a wrapper/stub and its purpose is to dynamically install the required tool + language and then pass the same parameters to the tool itself after it's installed.

e.g. the application like Renovate will simply call poetry via child process, which then kicks off:

  • Our own custom shell script
  • Installs python if missing (According to PYTHON_VERSION)
  • Installs poetry
  • Calls newly installed poetry and passes all args to it

Depends on

dotnet: runtime install

  • #177 Allow installing multiple dotnet versions to same folder (like official installer does)
  • Allow installation without root
  • Create prepare tool to install base deps which need root
  • blocked by #121

ref #16

Cache dir / volume

We should support an optional cache dir /volume to cache downloads, so we can mount a host volume / docker volume and reuse downloads to speedup later runs.

So Cache will be enabled if BUILDPACK_CACHE points to an existing folder.

Use adopt openjdk

We should consider using AdoptOpenJDK for building all java version

api: https://api.adoptopenjdk.net/swagger-ui/

https://api.adoptopenjdk.net/v3/info/available_releases

{
  "available_lts_releases": [
    8,
    11
  ],
  "available_releases": [
    8,
    9,
    10,
    11,
    12,
    13,
    14
  ],
  "most_recent_feature_release": 14,
  "most_recent_lts": 11
}

https://api.adoptopenjdk.net/v3/info/release_versions?page=0&page_size=10&release_type=ga&sort_order=DESC&vendor=adoptopenjdk

    {
      "adopt_build_number": 1,
      "build": 9,
      "major": 13,
      "minor": 0,
      "openjdk_version": "13.0.1+9",
      "security": 1,
      "semver": "13.0.1+9.1"
    },
    {
      "adopt_build_number": 1,
      "build": 33,
      "major": 13,
      "minor": 0,
      "openjdk_version": "13+33",
      "security": 0,
      "semver": "13.0.0+33.1"
    },

renovatebot/docker-buildpack#33 (comment)

Documentation of custom base image

Not all users of this buildpack will necessarily use containerbase/buildpack as their base image. For some, they will want to:

  • Substitute their own compatible (Ubuntu) base image
  • Copy over necessary buildpack files
  • Perform installs

The questions I have are:

  • Should the buildpack be published independently, e.g. as a GitHub release archive, so that it can be used/copied without needing containerbase/buildpack? I think this wouldn't be necessary, and it would complicate our own process
  • Can we someone reduce the necessary copy/bootstrap lines?

This is currently how such a scenario works:

FROM renovate/buildpack:4@sha256:bc40fb3708fb004ecd8b3a4f9a91ecb790d84e26da0a50c5a003ee3b494cd64e AS buildpack

FROM ubuntu:20.04 as base

# Set env and shell
ENV BASH_ENV=/usr/local/etc/env
SHELL ["/bin/bash" , "-c"]

# Set up buildpack
COPY --from=buildpack /usr/local/bin/ /usr/local/bin/
COPY --from=buildpack /usr/local/buildpack/ /usr/local/buildpack/
RUN install-buildpack

We should document this, and accept improvements to optimize it if people come up with them.

Custom SSL certificate support

Minimum support: Simple way of adding a custom certificate chain to a buildpack-based build. Ideally we can describe a single format of file that all languages/managers recognize. If not then a way we can "transform" it to a different format if some need it.

Ideal support: ability map a certificate into a container, configure it with an env variable, and it "just works".

Restructuring of folders/links

Today we see paths like this:

/usr/local/helm/3.7.1
/usr/local/dotnet
/home/ubuntu/.gem-global/bin
/home/ubuntu/.gem/ruby/3.0.0/bin
/usr/local/ruby/3.0.3/bin
/home/ubuntu/.cargo/bin
/usr/local/rust/1.57.0/bin
/usr/local/go/1.17.4/bin
/go/bin
/usr/local/elixir/1.13.0/bin
/home/ubuntu/.npm-global/bin
/usr/local/yarn/1.22.17/bin
/home/ubuntu/.local/bin
/usr/local/python/3.10.0/bin
/usr/local/poetry/1.1.12/bin
/usr/local/pnpm/6.23.1/bin
/usr/local/php/7.4.26/bin
/usr/local/node/14.18.2/bin
/usr/local/java/11.0.13+8/bin
/usr/local/gradle/6.9.1/bin
/usr/local/composer/2.1.14/bin
/home/ubuntu/bin
/home/ubuntu/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

Can we restructure how we install so that it can be like this?

/home/ubuntu/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

By this I'm hoping what can happen is that every time install-tool installs a version of a too, it symlinks it to /usr/local/bin or /home/ubuntu/bin.

e.g. install-tool npm 8.0.0 might install it into /home/ubuntu/.npm-global/bin but then there's be a symlink from /home/ubuntu/.npm-global/bin/npm to /home/ubuntu/bin/npm.

If we don't have to think about paths and dynamic ENV injection then wouldn't it be much easier to know what's installed?

Extract generic function as helpers

  • generic download helper
  • generic extraction helper
  • existance check
  • multiple tool versions (python has support via python{major} and python{major}.{minor} executables`

HTTP_PROXY support

We want all tools to be able to support HTTP_PROXY, including with a wrapper if necessary. We also want to support that a buildpack-based Dockerfile can be built behind a HTTP_PROXY.

Benchmark language/tool install times

For each language we support (Java, Node, Python, etc) as well as the package managers used by Renovate (npm, yarn, Poetry, Bundler, etc) we should ideally have them benchmarked in this repo as part of our actions, e.g. so we know what the approximate time it takes to add each language/tool.

This will be particularly useful when we start looking into the feasibility of run-time installs.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Repository problems

These problems occurred while renovating this repository. View logs.

  • WARN: Use matchDepNames instead of matchPackageNames

Pending Approval

These branches will be created by Renovate only once you click their checkbox below.

  • chore(deps): update dependency conventional-changelog-conventionalcommits to v8
  • chore(deps): update dependency semantic-release to v24
  • chore(deps): update linters (major) (eslint, eslint-plugin-jest)
  • chore(deps): update vitest monorepo to v2 (major) (@vitest/coverage-v8, @vitest/ui, vitest)
  • fix(deps): update dependency @sindresorhus/is to v7
  • fix(deps): update dependency execa to v9
  • 🔐 Create all pending approval PRs at once 🔐

Awaiting Schedule

These updates are awaiting their schedule. Click on a checkbox to get an update now.

  • test(deps): update dependency checkov to v3.2.193
  • test(deps): update dependency renovate to v37.432.0
  • build(deps): lock file maintenance

Pending Status Checks

These updates await pending status checks. To force their creation now, click the checkbox below.

  • chore(deps): update dependency @types/node to v20.14.11
  • chore(deps): update dependency vite to v5.3.4
  • chore(deps): update linters to v7.16.1 (@typescript-eslint/eslint-plugin, @typescript-eslint/parser)
  • fix(deps): update dependency semver to v7.6.3
  • chore(deps): update dependency husky to v9.1.0
  • chore(deps): update dependency type-fest to v4.22.0
  • fix(deps): update dependency pino to v9.3.1

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

dockerfile
.devcontainer/Dockerfile
  • ghcr.io/containerbase/devcontainer 10.15.5
Dockerfile
  • ubuntu 20.04@sha256:0b897358ff6624825fb50d20ffb605ab0eaea77ced0adb8c6a4b756513dec6fc
test/Dockerfile.jammy
test/Dockerfile.noble
test/dart/Dockerfile
test/dart/Dockerfile.arm64
test/dotnet/Dockerfile
test/dotnet/Dockerfile.arm64
test/erlang/Dockerfile
test/erlang/Dockerfile.arm64
test/flutter/Dockerfile
test/flutter/Dockerfile.arm64
test/flux/Dockerfile
test/flux/Dockerfile.arm64
test/golang/Dockerfile
test/golang/Dockerfile.arm64
test/helm/Dockerfile
test/helm/Dockerfile.arm64
test/java/Dockerfile
test/java/Dockerfile.arm64
test/jb/Dockerfile
test/jb/Dockerfile.arm64
test/latest/Dockerfile
test/latest/Dockerfile.arm64
test/nix/Dockerfile
test/nix/Dockerfile.arm64
test/node/Dockerfile
test/node/Dockerfile.arm64
test/php/Dockerfile
test/php/Dockerfile.arm64
test/powershell/Dockerfile
test/powershell/Dockerfile.arm64
test/python/Dockerfile
test/python/Dockerfile.arm64
test/ruby/Dockerfile
test/ruby/Dockerfile.arm64
test/rust/Dockerfile
test/rust/Dockerfile.arm64
test/swift/Dockerfile
test/swift/Dockerfile.arm64
github-actions
.github/actions/setup-node/action.yml
  • actions/cache v4.0.2@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
  • pnpm/action-setup v4.0.0@fe02b34f77f8bc703788d5817da081398fad5dd2
  • actions/setup-node v4.0.3@1e60f620b9541d16bece96c5465dc8ee9832be0b
  • actions/cache v4.0.2@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9
.github/workflows/build-push.yml
  • containerbase/internal-tools v3.3.7@0e63fc864db69586d89e4145596a0332e262485f
  • actions/checkout v4.1.7@692973e3d937129bcbf40652eb9f2f61becf3332
  • sigstore/cosign-installer v3.5.0@59acb6260d9c0ba8f4a2f9d9b48431a222b68e20
.github/workflows/build.yml
  • actions/checkout v4.1.7@692973e3d937129bcbf40652eb9f2f61becf3332
  • actions/checkout v4.1.7@692973e3d937129bcbf40652eb9f2f61becf3332
  • reviewdog/action-shellcheck v1.26.0@d99499e855260c9c56f7a1d066933b57326e9e7c
  • actions/checkout v4.1.7@692973e3d937129bcbf40652eb9f2f61becf3332
  • actions/checkout v4.1.7@692973e3d937129bcbf40652eb9f2f61becf3332
  • codecov/codecov-action v4.5.0@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673
  • actions/checkout v4.1.7@692973e3d937129bcbf40652eb9f2f61becf3332
  • actions/checkout v4.1.7@692973e3d937129bcbf40652eb9f2f61becf3332
  • containerbase/internal-tools v3.3.7@0e63fc864db69586d89e4145596a0332e262485f
  • actions/checkout v4.1.7@692973e3d937129bcbf40652eb9f2f61becf3332
.github/workflows/devcontainer.yml
  • actions/checkout v4.1.7@692973e3d937129bcbf40652eb9f2f61becf3332
  • devcontainers/ci v0.3.1900000349@a56d055efecd725e8cfe370543b6071b79989cc8
.github/workflows/trivy.yml
  • actions/checkout v4.1.7@692973e3d937129bcbf40652eb9f2f61becf3332
  • aquasecurity/trivy-action 0.10.0@e5f43133f6e8736992c9f3c1b3296e24b37e17f2
  • github/codeql-action v3.25.12@4fa2a7953630fd2f3fb380f21be14ede0169dd4f
nodenv
.node-version
  • node 20.15.1
npm
package.json
  • @sindresorhus/is 6.3.1
  • clipanion 3.2.1
  • common-tags 1.8.2
  • deepmerge 4.3.1
  • del 7.1.0
  • execa 8.0.1
  • global-agent 3.0.0
  • got 14.4.1
  • inversify 6.0.2
  • pino 9.2.0
  • pino-pretty 11.2.1
  • pretty-ms 9.0.0
  • reflect-metadata 0.2.2
  • semver 7.6.2
  • simple-git 3.25.0
  • typanion 3.14.0
  • zod 3.23.8
  • @semantic-release/exec 6.0.3
  • @tsconfig/node20 20.1.4
  • @tsconfig/strictest 2.0.5
  • @types/common-tags 1.8.4
  • @types/global-agent 2.1.3
  • @types/node 20.14.10
  • @types/semver 7.5.8
  • @types/shelljs 0.8.15
  • @typescript-eslint/eslint-plugin 7.16.0
  • @typescript-eslint/parser 7.16.0
  • @vitest/coverage-v8 1.6.0
  • @vitest/ui 1.6.0
  • @yao-pkg/pkg 5.12.0
  • bats 1.11.0
  • bats-assert 2.0.0
  • bats-support 0.3.0
  • clipanion 3.2.1
  • conventional-changelog-conventionalcommits 7.0.2
  • esbuild 0.23.0
  • esbuild-plugin-pino 2.2.0
  • eslint 8.57.0
  • eslint-config-prettier 9.1.0
  • eslint-formatter-gha 1.5.0
  • eslint-import-resolver-typescript 3.6.1
  • eslint-plugin-import 2.29.1
  • eslint-plugin-jest 27.9.0
  • eslint-plugin-jest-formatting 3.1.0
  • eslint-plugin-promise 6.4.0
  • eslint-plugin-typescript-enum 2.1.0
  • eslint-plugin-vitest 0.5.4
  • husky 9.0.11
  • lint-staged 15.2.7
  • nock 13.5.4
  • npm-run-all2 6.2.2
  • prettier 3.3.3
  • prettier-plugin-packagejson 2.5.1
  • semantic-release 23.1.1
  • shelljs 0.8.5
  • tsx 4.16.2
  • type-fest 4.21.0
  • typescript 5.4.5
  • vite 5.3.3
  • vite-tsconfig-paths 4.3.2
  • vitest 1.6.0
  • vitest-github-actions-reporter 0.11.1
  • node >=20.9.0
  • pnpm ^9.0.0
  • bats-support 0.3.0
  • esbuild 0.23.0
  • tsconfig-paths 4.2.0
  • vite 5.3.3
  • pnpm 9.5.0
regex
test/flux/Dockerfile
  • flux v2.3.0
test/java/Dockerfile
  • java 21.0.3+9.0.LTS
test/latest/Dockerfile
  • python 3.12.4
test/node/Dockerfile
  • yarn 1.22.22
  • yarn 3.3.0
  • pnpm 9.5.0
  • renovate 37.431.4
test/ruby/Dockerfile
  • bundler 2.5.15
  • bundler 2.5.15
  • bundler 2.5.15
  • bundler 2.5.15
Dockerfile
  • git v2.45.2
test/Dockerfile.jammy
  • git v2.45.2
  • bazelisk v1.20.0
  • bun 1.1.20
  • dart 2.19.6
  • docker v27.0.3
  • dotnet 8.0.303
  • flutter 3.22.2
  • flux v2.3.0
  • git-lfs v3.5.1
  • gleam 1.3.2
  • golang 1.22.5
  • helm v3.15.3
  • helmfile v0.166.0
  • kustomize 5.4.2
  • nix 2.23.3
  • powershell v7.4.3
  • rust 1.79.0
  • swift 5.10.1
  • terraform 1.9.2
  • jb v0.5.1
  • vendir v0.41.0
  • erlang 26.2.5.0
  • elixir 1.16.3
  • java 21.0.3+9.0.LTS
  • gradle 8.9
  • node v20.15.1
  • pnpm 9.5.0
  • yarn 4.3.1
  • php 8.3.9
  • composer 2.7.7
  • python 3.12.4
  • conan 2.5.0
  • hashin 1.0.1
  • pipenv 2024.0.1
  • pdm 2.16.1
  • poetry 1.8.3
  • ruby 3.3.4
  • bundler 2.5.15
  • cocoapods 1.15.2
test/Dockerfile.noble
  • git v2.45.2
  • bazelisk v1.20.0
  • bun 1.1.20
  • dart 2.19.6
  • docker v27.0.3
  • dotnet 8.0.303
  • flutter 3.22.2
  • flux v2.3.0
  • git-lfs v3.5.1
  • gleam 1.3.2
  • golang 1.22.5
  • helm v3.15.3
  • helmfile v0.166.0
  • kustomize 5.4.2
  • nix 2.23.3
  • powershell v7.4.3
  • rust 1.79.0
  • swift 5.10.1
  • terraform 1.9.2
  • jb v0.5.1
  • vendir v0.41.0
  • erlang 26.2.5.0
  • elixir 1.16.3
  • java 21.0.3+9.0.LTS
  • gradle 8.9
  • node v20.15.1
  • pnpm 9.5.0
  • yarn 4.3.1
  • php 8.3.9
  • composer 2.7.7
  • python 3.12.4
  • conan 2.5.0
  • hashin 1.0.1
  • pipenv 2024.0.1
  • pdm 2.16.1
  • poetry 1.8.3
  • ruby 3.3.4
  • bundler 2.5.15
  • cocoapods 1.15.2
test/dart/Dockerfile
  • dart 2.19.6
  • dart 2.19.6
test/dart/Dockerfile.arm64
  • dart 2.19.6
test/dotnet/Dockerfile
  • dotnet 8.0.303
  • dotnet 8.0.303
  • dotnet 8.0.303
  • dotnet 8.0.303
test/dotnet/Dockerfile.arm64
  • dotnet 8.0.303
test/erlang/Dockerfile
  • erlang 26.2.5.0
  • elixir 1.16.3
  • erlang 24.3.4.17
  • elixir 1.16.3
  • erlang 22.3.4.27
test/erlang/Dockerfile.arm64
  • erlang 26.2.5.0
  • elixir 1.16.3
test/flutter/Dockerfile
  • git v2.45.2
  • flutter 3.22.2
  • flutter 3.22.2
test/flutter/Dockerfile.arm64
  • git v2.45.2
  • flutter 3.22.2
test/flux/Dockerfile.arm64
  • flux v2.3.0
test/golang/Dockerfile
  • git v2.45.2
  • golang 1.22.5
  • golang 1.22.5
test/golang/Dockerfile.arm64
  • git v2.45.2
  • golang 1.22.5
test/helm/Dockerfile.arm64
  • helm v3.15.3
test/java/Dockerfile
  • git v2.45.2
  • java 21.0.3+9.0.LTS
  • java-jre 21.0.4+7.0.LTS
  • gradle 8.9
  • maven 3.9.8
  • scala v2.13.14
  • sbt v1.10.1
test/java/Dockerfile.arm64
  • java 21.0.3+9.0.LTS
  • gradle 8.9
  • maven 3.9.8
test/jb/Dockerfile
  • jb v0.5.1
test/jb/Dockerfile.arm64
  • jb v0.5.1
test/latest/Dockerfile
  • node v20.15.1
  • php 7.4.14
  • powershell v7.4.3
  • terraform 1.9.2
  • git v2.45.2
  • flux v2.3.0
  • git-lfs v3.5.1
  • powershell v7.4.3
  • node v20.15.1
  • docker v27.0.3
  • bazelisk v1.20.0
  • bun 1.1.20
  • gleam 1.3.2
test/latest/Dockerfile.arm64
  • bazelisk v1.20.0
  • bun 1.1.20
  • gleam 1.3.2
  • docker v27.0.3
  • git v2.45.2
  • git-lfs v3.5.1
  • helmfile v0.166.0
  • kustomize 5.4.2
  • terraform 1.9.2
  • vendir v0.41.0
test/nix/Dockerfile
  • nix 2.23.3
test/nix/Dockerfile.arm64
  • nix 2.23.3
test/node/Dockerfile
  • node v20.15.1
  • yarn 1.22.22
  • yarn 4.3.1
  • pnpm 9.5.0
  • node v18.20.4
  • yarn 1.22.22
  • del-cli 5.1.0
  • yarn-slim 1.22.22
  • yarn 1.22.22
  • corepack 0.29.2
  • corepack 0.29.2
  • corepack 0.29.2
  • yarn 1.22.22
  • corepack 0.29.2
  • corepack 0.29.2
  • pnpm 9.5.0
  • corepack 0.29.2
  • corepack 0.29.2
test/node/Dockerfile.arm64
  • node v20.15.1
  • pnpm 9.5.0
  • yarn 1.22.22
  • renovate 37.431.4
test/php/Dockerfile
  • php 8.3.9
  • composer 2.7.7
  • php 8.3.9
  • composer 2.7.7
test/php/Dockerfile.arm64
  • php 8.3.9
  • composer 2.7.7
test/powershell/Dockerfile
  • powershell v7.4.3
test/powershell/Dockerfile.arm64
  • powershell v7.4.3
test/python/Dockerfile
  • python 3.12.4
  • python 3.12.4
  • pipenv 2024.0.1
  • poetry 1.8.3
  • pip-tools 7.4.1
  • pip-tools 7.4.1
  • python 3.12.4
  • poetry 1.8.3
  • poetry 1.8.3
  • poetry 1.8.3
  • hashin 1.0.1
  • pipenv 2024.0.1
  • poetry 1.8.3
  • hashin 1.0.1
  • checkov 3.2.189
  • python 3.12.4
  • pipenv 2024.0.1
  • pdm 2.16.1
  • conan 2.5.0
test/python/Dockerfile.arm64
  • python 3.12.4
  • checkov 3.2.189
  • hashin 1.0.1
  • pipenv 2024.0.1
  • poetry 1.8.3
  • conan 2.5.0
test/ruby/Dockerfile
  • git v2.45.2
  • ruby 3.3.4
  • cocoapods 1.15.2
  • rake 13.2.1
test/ruby/Dockerfile.arm64
  • ruby 3.3.4
  • git v2.45.2
  • cocoapods 1.15.2
test/rust/Dockerfile
  • rust 1.79.0
  • rust 1.79.0
  • rust 1.79.0
test/rust/Dockerfile.arm64
  • rust 1.79.0
test/swift/Dockerfile
  • git v2.45.2
  • swift 5.10.1
test/swift/Dockerfile.arm64
  • swift 5.10.1
package.json
  • @yao-pkg/pkg 5.12.0
  • clipanion 3.2.1

  • Check this box to trigger a request for Renovate to run again on this repository

OpenShift compatibility

I think our images have previously aimed at v3 OpenShift compatibility but may not be v4 compatible. In particular we set USER 1000 but may rely on hardcoded /home/x. For some of our tools we rely on them finding config in their home directory.

I found a discussion prior to v4 which gives some hope that we might still be able to put them in /home/x and it works despite random UIDs: openshift/origin#23369 (comment)

If as that comment indicates we can set HOME=/home/x and ensure it's writable by group 0 then it could be enough for tools to find their "home directory config" regardless of what UID they run as.

Another question remains though: is it forbidden to set USER 1000 in our images for OpenShift compatibility as seemed to be recommended in OpenShift v3, or we just need to be aware of its limitations.

Log hosts during build

Some users will build inside a corporate/restricted network and need to explicitly allow hosts. Without help, it's a slow process for them to keep restarting the build, waiting for it to file, then trying to work out which host was blocked before restarting.

Ideally we could combine #2 with logging so that we could log all hosts we connect to during the build.

Challenges:

  • Do we log the DNS lookups by the build container, or by the proxy? I'm thinking the build container only needs to do a DNS lookup for the proxy and otherwise the proxy does DNS lookups
  • We typically cache builds for efficiency, but in that case how do we know the "complete" list of DNS lookups?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.