fix: buildx multiarch image date and history not shown (#309)

Support images created with buildx and `--provenance true`

fixes #309
This commit is contained in:
Joxit 2023-05-20 02:04:22 +02:00
parent d2222bef05
commit 9ebbbc3518
No known key found for this signature in database
GPG Key ID: F526592B8E012263
5 changed files with 1305 additions and 4 deletions

View File

@ -14,10 +14,26 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import { Http } from './http';
import { isDigit, eventTransfer, ERROR_CAN_NOT_READ_CONTENT_DIGEST } from './utils';
import { Http } from './http.js';
import { eventTransfer, ERROR_CAN_NOT_READ_CONTENT_DIGEST } from './utils.js';
import observable from '@riotjs/observable';
export const supportListManifest = (response) => {
if (response.mediaType === 'application/vnd.docker.distribution.manifest.list.v2+json') {
return true;
}
if (response.mediaType === 'application/vnd.oci.image.index.v1+json' && Array.isArray(response.manifests)) {
return !response.manifests.some(({ mediaType }) => mediaType !== 'application/vnd.oci.image.manifest.v1+json');
}
return false;
};
export const filterWrongManifests = (response) => {
return response.manifests.filter(
({ annotations }) => !annotations || annotations['vnd.docker.reference.type'] !== 'attestation-manifest'
);
};
export class DockerImage {
constructor(name, tag, { list, registryUrl, onNotify, onAuthentication, useControlCacheHeader }) {
this.name = name;
@ -73,8 +89,8 @@ export class DockerImage {
oReq.addEventListener('loadend', function () {
if (this.status === 200 || this.status === 202) {
const response = JSON.parse(this.responseText);
if (response.mediaType === 'application/vnd.docker.distribution.manifest.list.v2+json' && self.opts.list) {
self.trigger('list', response);
if (supportListManifest(response) && self.opts.list) {
self.trigger('list', filterWrongManifests(response));
const manifest = response.manifests[0];
const image = new DockerImage(self.name, manifest.digest, { ...self.opts, list: false });
eventTransfer(image, self);

45
test/docker-image.test.js Normal file
View File

@ -0,0 +1,45 @@
import { supportListManifest, filterWrongManifests } from '../src/scripts/docker-image.js';
import { dockerManifestList } from './fixtures/docker-manifest-list.js';
import { ociImageIndexLayer } from './fixtures/oci-image-index-layer.js';
import { ociImageIndexManifest } from './fixtures/oci-image-index-manifest.js';
import assert from 'assert';
describe('docker-image', () => {
describe('supportListManifest', () => {
/**
* Manifest of an image created with:
* docker buildx build --platform amd64,arm -t joxit/docker-registry-ui:buildx --push --provenance false .
*/
it('should support mediaType `application/vnd.docker.distribution.manifest.list.v2+json`', () => {
assert.ok(supportListManifest(dockerManifestList['application/vnd.docker.distribution.manifest.list.v2+json']));
});
/**
* Index of an image created with:
* docker buildx build --platform amd64,arm -t joxit/docker-registry-ui:buildx --push --provenance true .
*/
it('should support mediaType `application/vnd.oci.image.index.v1+json`', () => {
assert.ok(supportListManifest(ociImageIndexManifest['application/vnd.oci.image.index.v1+json']));
});
/**
* Index of an image created with:
* buildctl build --frontend=dockerfile.v0 --local context=. --local dockerfile=. --export-cache type=registry,ref=joxit/docker-registry-ui:buildkit
*/
it('should not support mediaType `application/vnd.oci.image.index.v1+json` with layers (`application/vnd.oci.image.layer.v1.tar+gzip`)', () => {
assert.ok(!supportListManifest(ociImageIndexLayer['application/vnd.oci.image.index.v1+json']));
});
});
describe('supportListManifest', () => {
it('should return all manifests for `application/vnd.docker.distribution.manifest.list.v2+json`', () => {
assert.equal(
filterWrongManifests(dockerManifestList['application/vnd.docker.distribution.manifest.list.v2+json']).length,
2
);
});
it('should return all manifests for `application/vnd.oci.image.index.v1+json`', () => {
assert.equal(
filterWrongManifests(ociImageIndexManifest['application/vnd.oci.image.index.v1+json']).length,
2
);
});
});
});

542
test/fixtures/docker-manifest-list.js vendored Normal file
View File

@ -0,0 +1,542 @@
/**
* Manifest of an image created with:
* docker buildx build --platform amd64,arm -t joxit/docker-registry-ui:buildx --push --provenance false .
*/
const manifestList = {
'mediaType': 'application/vnd.docker.distribution.manifest.list.v2+json',
'schemaVersion': 2,
'manifests': [
{
'mediaType': 'application/vnd.docker.distribution.manifest.v2+json',
'digest': 'sha256:7d9bbfa92dbd2a9c09abe924ee7cb8f164be59f25b9457fa0c593a7110dba89f',
'size': 2850,
'platform': { 'architecture': 'amd64', 'os': 'linux' },
},
{
'mediaType': 'application/vnd.docker.distribution.manifest.v2+json',
'digest': 'sha256:5ef7a7d411a524beff05c9d1a541442ff78bb1ec6b45a55434dd3e51e00292b1',
'size': 2849,
'platform': { 'architecture': 'arm', 'os': 'linux', 'variant': 'v7' },
},
],
};
const manifestAmd64 = {
'mediaType': 'application/vnd.docker.distribution.manifest.v2+json',
'schemaVersion': 2,
'config': {
'mediaType': 'application/vnd.docker.container.image.v1+json',
'digest': 'sha256:7209907f3aa39f8b259069272274f185c4e9772ea7159722728b5f648c71eaad',
'size': 13772,
},
'layers': [
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:f56be85fc22e46face30e2c3de3f7fe7c15f8fd7c4e5add29d7f64b87abdaa09',
'size': 3374563,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:2ce963c369bc5690378d31c51dc575c7035f6adfcc1e286051b5a5d9a7b0cc5c',
'size': 1799036,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:59b9d2200e632e457f800814693b3a01adf09a244c38ebe8d3beef5c476c4c55',
'size': 626,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:3e1e579c95fece6bbe0cb9c8c2949512a3f8caaf9dbe6219dc6495abb9902040',
'size': 956,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:547a97583f72a32903ca1357d48fa302e91e8f83ffa18e0c40fd87adb5c06025',
'size': 773,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:1f21f983520d9a440d410ea62eb0bda61a2b50dd79878071181b56b82efa9ef3',
'size': 1404,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:c23b4f8cf279507bb1dd3d6eb2d15ca84fac9eac215ab5b529aa8b5a060294c8',
'size': 11607291,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1',
'size': 32,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:a5a652ffc299e3af7414a7c48a8b287785c0c70d7e7712cc81da43cfd18dc677',
'size': 1023,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:ac35a311bcf31486bf05fb0a0b66dd1fb313f8ac6b631c07662f5c77a017b142',
'size': 953,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:0bbe5bab7d19c248fd83f1d7746b306b1590118dcdab99cf49b72cec4f744a15',
'size': 878128,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:b516cdaec2158585780cfe13e196fbd6ee4e2aed81d1007903da60df2a6f8d12',
'size': 18327,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:c93af1909df12d053ee3b101b005c15312dedeee3d18c2f23a3aa3776693a0f5',
'size': 900629,
},
],
};
const manifestArm = {
'mediaType': 'application/vnd.docker.distribution.manifest.v2+json',
'schemaVersion': 2,
'config': {
'mediaType': 'application/vnd.docker.container.image.v1+json',
'digest': 'sha256:322f0eb73bbb441e1a0eae5dd05dfa56d7bc78b2be4682056463d919393b7d0b',
'size': 13773,
},
'layers': [
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:fd4b2aeb476b6c2c0c3049dae919de20fe09e90deac95e3181d717055cbe6707',
'size': 2868519,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:661c223f0b9c15a114f1a1cb1cfcfeea06544eb6d74e5d81bf239e3843d5963b',
'size': 1748335,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:4edc4a7923b338722943b7ca9ab57db06e501a300e63d2694830bce5a13a8719',
'size': 625,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:d04be6d2e446962d34ac7a76f347bf8a8bf8def411d2eb646241504f3cbc4835',
'size': 956,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:c4eb1daa4076033e2233b6aed11887d3e6b77fbf7910ced0673fe7f2e0c218b7',
'size': 770,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:8bdf974e3c33c7ab91a2c116867eb8007a255b8ffe7a8ff55344f0a4110eff9c',
'size': 1403,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:b157eb398be1a483b6d89235dc72a936bc9070e13e4ce1af9e3e8101ca37f78a',
'size': 9400541,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1',
'size': 32,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:c4b7c519f7157460cf3fdb5bc3ef2a503e6c011cd1afb07f9c4c92df1d0d5c98',
'size': 1023,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:5e59186ea6d831f79fb2d3b861ef2aac0e8610146f4ea86d8d0bfaff014ba168',
'size': 954,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:4df6c8febd43820b56a4a778f4ad551395c137c42cc4c9546e642df6f7eeef9c',
'size': 878130,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:d8b5650b9cc734d84c7f567264282cc58161d77a427c63c7380bfe8b35c916ae',
'size': 18322,
},
{
'mediaType': 'application/vnd.docker.image.rootfs.diff.tar.gzip',
'digest': 'sha256:803176948dabb2a0a106f58bfb423dea1da98bbe05e713649e39ef13dde1de6f',
'size': 900626,
},
],
};
const blobAmd64 = {
'architecture': 'amd64',
'config': {
'ExposedPorts': { '80/tcp': {} },
'Env': [
'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
'NGINX_VERSION=1.23.4',
'PKG_RELEASE=1',
'NJS_VERSION=0.7.11',
'NGINX_PROXY_HEADER_Host=$http_host',
'NGINX_LISTEN_PORT=80',
'SHOW_CATALOG_NB_TAGS=false',
],
'Entrypoint': ['/docker-entrypoint.sh'],
'Cmd': ['nginx', '-g', 'daemon off;'],
'WorkingDir': '/usr/share/nginx/html/',
'Labels': { 'maintainer': 'Jones MAGLOIRE @Joxit' },
'StopSignal': 'SIGQUIT',
'OnBuild': null,
},
'created': '2023-05-16T17:53:59.778774465Z',
'history': [
{
'created': '2023-03-29T18:19:24.348438709Z',
'created_by': '/bin/sh -c #(nop) ADD file:9a4f77dfaba7fd2aa78186e4ef0e7486ad55101cefc1fabbc1b385601bb38920 in / ',
},
{
'created': '2023-03-29T18:19:24.45578926Z',
'created_by': '/bin/sh -c #(nop) CMD ["/bin/sh"]',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:10.826996048Z',
'created_by': '/bin/sh -c #(nop) LABEL maintainer=NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:10.902296598Z',
'created_by': '/bin/sh -c #(nop) ENV NGINX_VERSION=1.23.4',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:10.975496976Z',
'created_by': '/bin/sh -c #(nop) ENV PKG_RELEASE=1',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:16.216540441Z',
'created_by':
'/bin/sh -c set -x \u0026\u0026 addgroup -g 101 -S nginx \u0026\u0026 adduser -S -D -H -u 101 -h /var/cache/nginx -s /sbin/nologin -G nginx -g nginx nginx \u0026\u0026 apkArch="$(cat /etc/apk/arch)" \u0026\u0026 nginxPackages=" nginx=${NGINX_VERSION}-r${PKG_RELEASE} " \u0026\u0026 apk add --no-cache --virtual .checksum-deps openssl \u0026\u0026 case "$apkArch" in x86_64|aarch64) set -x \u0026\u0026 KEY_SHA512="e09fa32f0a0eab2b879ccbbc4d0e4fb9751486eedda75e35fac65802cc9faa266425edf83e261137a2f4d16281ce2c1a5f4502930fe75154723da014214f0655" \u0026\u0026 wget -O /tmp/nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub \u0026\u0026 if echo "$KEY_SHA512 */tmp/nginx_signing.rsa.pub" | sha512sum -c -; then echo "key verification succeeded!"; mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/; else echo "key verification failed!"; exit 1; fi \u0026\u0026 apk add -X "https://nginx.org/packages/mainline/alpine/v$(egrep -o \'^[0-9]+\\.[0-9]+\' /etc/alpine-release)/main" --no-cache $nginxPackages ;; *) set -x \u0026\u0026 tempDir="$(mktemp -d)" \u0026\u0026 chown nobody:nobody $tempDir \u0026\u0026 apk add --no-cache --virtual .build-deps gcc libc-dev make openssl-dev pcre2-dev zlib-dev linux-headers bash alpine-sdk findutils \u0026\u0026 su nobody -s /bin/sh -c " export HOME=${tempDir} \u0026\u0026 cd ${tempDir} \u0026\u0026 curl -f -O https://hg.nginx.org/pkg-oss/archive/${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 PKGOSSCHECKSUM=\\"8f3f6c1ddd984c0c7320d3bea25eee42749db6d69c251223cf91d69b8d80b703ab39eb94fcf731399a7693ebd8dd37d1b3232ea1184ca98e5ca0ba6165e1a05c *${NGINX_VERSION}-${PKG_RELEASE}.tar.gz\\" \u0026\u0026 if [ \\"\\$(openssl sha512 -r ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz)\\" = \\"\\$PKGOSSCHECKSUM\\" ]; then echo \\"pkg-oss tarball checksum verification succeeded!\\"; else echo \\"pkg-oss tarball checksum verification failed!\\"; exit 1; fi \u0026\u0026 tar xzvf ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 cd pkg-oss-${NGINX_VERSION}-${PKG_RELEASE} \u0026\u0026 cd alpine \u0026\u0026 make base \u0026\u0026 apk index -o ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz ${tempDir}/packages/alpine/${apkArch}/*.apk \u0026\u0026 abuild-sign -k ${tempDir}/.abuild/abuild-key.rsa ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz " \u0026\u0026 cp ${tempDir}/.abuild/abuild-key.rsa.pub /etc/apk/keys/ \u0026\u0026 apk del .build-deps \u0026\u0026 apk add -X ${tempDir}/packages/alpine/ --no-cache $nginxPackages ;; esac \u0026\u0026 apk del .checksum-deps \u0026\u0026 if [ -n "$tempDir" ]; then rm -rf "$tempDir"; fi \u0026\u0026 if [ -n "/etc/apk/keys/abuild-key.rsa.pub" ]; then rm -f /etc/apk/keys/abuild-key.rsa.pub; fi \u0026\u0026 if [ -n "/etc/apk/keys/nginx_signing.rsa.pub" ]; then rm -f /etc/apk/keys/nginx_signing.rsa.pub; fi \u0026\u0026 apk add --no-cache --virtual .gettext gettext \u0026\u0026 mv /usr/bin/envsubst /tmp/ \u0026\u0026 runDeps="$( scanelf --needed --nobanner /tmp/envsubst | awk \'{ gsub(/,/, "\\nso:", $2); print "so:" $2 }\' | sort -u | xargs -r apk info --installed | sort -u )" \u0026\u0026 apk add --no-cache $runDeps \u0026\u0026 apk del .gettext \u0026\u0026 mv /tmp/envsubst /usr/local/bin/ \u0026\u0026 apk add --no-cache tzdata \u0026\u0026 ln -sf /dev/stdout /var/log/nginx/access.log \u0026\u0026 ln -sf /dev/stderr /var/log/nginx/error.log \u0026\u0026 mkdir /docker-entrypoint.d',
},
{
'created': '2023-03-29T22:31:16.339435018Z',
'created_by':
'/bin/sh -c #(nop) COPY file:7b307b62e82255f040c9812421a30090bf9abf3685f27b02d77fcca99f997911 in / ',
},
{
'created': '2023-03-29T22:31:16.427781358Z',
'created_by':
'/bin/sh -c #(nop) COPY file:5c18272734349488bd0c94ec8d382c872c1a0a435cca13bd4671353d6021d2cb in /docker-entrypoint.d ',
},
{
'created': '2023-03-29T22:31:16.515135125Z',
'created_by':
'/bin/sh -c #(nop) COPY file:abbcbf84dc17ee4454b6b2e3cf914be88e02cf84d344ec45a5b31235379d722a in /docker-entrypoint.d ',
},
{
'created': '2023-03-29T22:31:16.601542115Z',
'created_by':
'/bin/sh -c #(nop) COPY file:e57eef017a414ca793499729d80a7b9075790c9a804f930f1417e56d506970cf in /docker-entrypoint.d ',
},
{
'created': '2023-03-29T22:31:16.678093757Z',
'created_by': '/bin/sh -c #(nop) ENTRYPOINT ["/docker-entrypoint.sh"]',
'empty_layer': true,
},
{ 'created': '2023-03-29T22:31:16.756398749Z', 'created_by': '/bin/sh -c #(nop) EXPOSE 80', 'empty_layer': true },
{
'created': '2023-03-29T22:31:16.839607817Z',
'created_by': '/bin/sh -c #(nop) STOPSIGNAL SIGQUIT',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:16.921795894Z',
'created_by': '/bin/sh -c #(nop) CMD ["nginx" "-g" "daemon off;"]',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:30.252298671Z',
'created_by': '/bin/sh -c #(nop) ENV NJS_VERSION=0.7.11',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:35.828698308Z',
'created_by':
'/bin/sh -c set -x \u0026\u0026 apkArch="$(cat /etc/apk/arch)" \u0026\u0026 nginxPackages=" nginx=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-xslt=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-geoip=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-image-filter=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-njs=${NGINX_VERSION}.${NJS_VERSION}-r${PKG_RELEASE} " \u0026\u0026 apk add --no-cache --virtual .checksum-deps openssl \u0026\u0026 case "$apkArch" in x86_64|aarch64) set -x \u0026\u0026 KEY_SHA512="e09fa32f0a0eab2b879ccbbc4d0e4fb9751486eedda75e35fac65802cc9faa266425edf83e261137a2f4d16281ce2c1a5f4502930fe75154723da014214f0655" \u0026\u0026 wget -O /tmp/nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub \u0026\u0026 if echo "$KEY_SHA512 */tmp/nginx_signing.rsa.pub" | sha512sum -c -; then echo "key verification succeeded!"; mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/; else echo "key verification failed!"; exit 1; fi \u0026\u0026 apk add -X "https://nginx.org/packages/mainline/alpine/v$(egrep -o \'^[0-9]+\\.[0-9]+\' /etc/alpine-release)/main" --no-cache $nginxPackages ;; *) set -x \u0026\u0026 tempDir="$(mktemp -d)" \u0026\u0026 chown nobody:nobody $tempDir \u0026\u0026 apk add --no-cache --virtual .build-deps gcc libc-dev make openssl-dev pcre2-dev zlib-dev linux-headers libxslt-dev gd-dev geoip-dev libedit-dev bash alpine-sdk findutils \u0026\u0026 su nobody -s /bin/sh -c " export HOME=${tempDir} \u0026\u0026 cd ${tempDir} \u0026\u0026 curl -f -O https://hg.nginx.org/pkg-oss/archive/${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 PKGOSSCHECKSUM=\\"8f3f6c1ddd984c0c7320d3bea25eee42749db6d69c251223cf91d69b8d80b703ab39eb94fcf731399a7693ebd8dd37d1b3232ea1184ca98e5ca0ba6165e1a05c *${NGINX_VERSION}-${PKG_RELEASE}.tar.gz\\" \u0026\u0026 if [ \\"\\$(openssl sha512 -r ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz)\\" = \\"\\$PKGOSSCHECKSUM\\" ]; then echo \\"pkg-oss tarball checksum verification succeeded!\\"; else echo \\"pkg-oss tarball checksum verification failed!\\"; exit 1; fi \u0026\u0026 tar xzvf ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 cd pkg-oss-${NGINX_VERSION}-${PKG_RELEASE} \u0026\u0026 cd alpine \u0026\u0026 make module-geoip module-image-filter module-njs module-xslt \u0026\u0026 apk index -o ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz ${tempDir}/packages/alpine/${apkArch}/*.apk \u0026\u0026 abuild-sign -k ${tempDir}/.abuild/abuild-key.rsa ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz " \u0026\u0026 cp ${tempDir}/.abuild/abuild-key.rsa.pub /etc/apk/keys/ \u0026\u0026 apk del .build-deps \u0026\u0026 apk add -X ${tempDir}/packages/alpine/ --no-cache $nginxPackages ;; esac \u0026\u0026 apk del .checksum-deps \u0026\u0026 if [ -n "$tempDir" ]; then rm -rf "$tempDir"; fi \u0026\u0026 if [ -n "/etc/apk/keys/abuild-key.rsa.pub" ]; then rm -f /etc/apk/keys/abuild-key.rsa.pub; fi \u0026\u0026 if [ -n "/etc/apk/keys/nginx_signing.rsa.pub" ]; then rm -f /etc/apk/keys/nginx_signing.rsa.pub; fi \u0026\u0026 apk add --no-cache curl ca-certificates',
},
{
'created': '2023-05-16T17:53:59.527106164Z',
'created_by': 'LABEL maintainer=Jones MAGLOIRE @Joxit',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.527106164Z',
'created_by': 'WORKDIR /usr/share/nginx/html/',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.527106164Z',
'created_by': 'ENV NGINX_PROXY_HEADER_Host=$http_host',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.527106164Z',
'created_by': 'ENV NGINX_LISTEN_PORT=80',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.527106164Z',
'created_by': 'ENV SHOW_CATALOG_NB_TAGS=false',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.549089552Z',
'created_by': 'COPY nginx/default.conf /etc/nginx/conf.d/default.conf # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.605792395Z',
'created_by': 'COPY bin/90-docker-registry-ui.sh /docker-entrypoint.d/90-docker-registry-ui.sh # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.627224324Z',
'created_by': 'COPY dist/ /usr/share/nginx/html/ # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.644817137Z',
'created_by': 'COPY favicon.ico /usr/share/nginx/html/ # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.778774465Z',
'created_by':
'RUN /bin/sh -c chown -R nginx:nginx /etc/nginx/ /usr/share/nginx/html/ /var/cache/nginx # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
],
'moby.buildkit.buildinfo.v1':
'eyJmcm9udGVuZCI6ImRvY2tlcmZpbGUudjAiLCJzb3VyY2VzIjpbeyJ0eXBlIjoiZG9ja2VyLWltYWdlIiwicmVmIjoiZG9ja2VyLmlvL2xpYnJhcnkvbmdpbng6YWxwaW5lIiwicGluIjoic2hhMjU2OjAyZmZkNDM5YjcxZDllYTk0MDhlNDQ5YjU2OGY2NWMwYmJiYjk0YmViZDg3NTBmMWQ4MDIzMWFiNjQ5NjAwOGUifV19',
'os': 'linux',
'rootfs': {
'type': 'layers',
'diff_ids': [
'sha256:f1417ff83b319fbdae6dd9cd6d8c9c88002dcd75ecf6ec201c8c6894681cf2b5',
'sha256:1003ff723696bfd596cd65592fa26554840e90780f6937e6ddccc909b8ed1443',
'sha256:1d54586a1706c0af48668c10cbd8246626acb4fec01287be54cd9b26d72df15d',
'sha256:c1cd5c8c68ef2336b2504336206d58931e9215a863a35a741f66aa3f4970b0f5',
'sha256:f0fb842dea4179a94f1b8c2ac178e72690fa2b30e25e03a7a7893794fe9520a5',
'sha256:f9cb3f1f1d3d7c591c4ab02118816fe6761a8f2f7b2500a5ec7421a42b8a5ea2',
'sha256:31531248c7cbf5b31a8d9695c20041b9b3749b8c04b9831331ad93333fcf1474',
'sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef',
'sha256:d2a2fde0ccbec9f84533eba6eae08e61456eae22cdb18cbd6770584a96de079c',
'sha256:417b58457dd524a2ab48d3b4d124910aaff0680035f71816ee6efb5fb08c784a',
'sha256:a8ecc6cb361d80fdf6d9a3149dcd7d3042cf1b26b45a6e591032033c98848de9',
'sha256:f5fe999227158f3d3649ac32585d981b74774e9d3b8f8254104395470753c751',
'sha256:3eaed6821acc2fcc0f298984d83dd9ca0317b028ed4a5b1cdcb58d4e1c6aec74',
],
},
};
const blobArm = {
'architecture': 'arm',
'config': {
'ExposedPorts': { '80/tcp': {} },
'Env': [
'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
'NGINX_VERSION=1.23.4',
'PKG_RELEASE=1',
'NJS_VERSION=0.7.11',
'NGINX_PROXY_HEADER_Host=$http_host',
'NGINX_LISTEN_PORT=80',
'SHOW_CATALOG_NB_TAGS=false',
],
'Entrypoint': ['/docker-entrypoint.sh'],
'Cmd': ['nginx', '-g', 'daemon off;'],
'WorkingDir': '/usr/share/nginx/html/',
'Labels': { 'maintainer': 'Jones MAGLOIRE @Joxit' },
'StopSignal': 'SIGQUIT',
'OnBuild': null,
},
'created': '2023-05-18T06:18:36.698896035Z',
'history': [
{
'created': '2023-03-29T18:03:38.84773971Z',
'created_by': '/bin/sh -c #(nop) ADD file:959fa0ffb60c37c4fdc0d32ac31511f8dead32ef7f4bd848b11ff144a6b37012 in / ',
},
{
'created': '2023-03-29T18:03:38.9602307Z',
'created_by': '/bin/sh -c #(nop) CMD ["/bin/sh"]',
'empty_layer': true,
},
{
'created': '2023-03-29T19:27:03.894972841Z',
'created_by': '/bin/sh -c #(nop) LABEL maintainer=NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e',
'empty_layer': true,
},
{
'created': '2023-03-29T19:27:03.977068216Z',
'created_by': '/bin/sh -c #(nop) ENV NGINX_VERSION=1.23.4',
'empty_layer': true,
},
{
'created': '2023-03-29T19:27:04.093650581Z',
'created_by': '/bin/sh -c #(nop) ENV PKG_RELEASE=1',
'empty_layer': true,
},
{
'created': '2023-03-29T19:27:44.532352816Z',
'created_by':
'/bin/sh -c set -x \u0026\u0026 addgroup -g 101 -S nginx \u0026\u0026 adduser -S -D -H -u 101 -h /var/cache/nginx -s /sbin/nologin -G nginx -g nginx nginx \u0026\u0026 apkArch="$(cat /etc/apk/arch)" \u0026\u0026 nginxPackages=" nginx=${NGINX_VERSION}-r${PKG_RELEASE} " \u0026\u0026 apk add --no-cache --virtual .checksum-deps openssl \u0026\u0026 case "$apkArch" in x86_64|aarch64) set -x \u0026\u0026 KEY_SHA512="e09fa32f0a0eab2b879ccbbc4d0e4fb9751486eedda75e35fac65802cc9faa266425edf83e261137a2f4d16281ce2c1a5f4502930fe75154723da014214f0655" \u0026\u0026 wget -O /tmp/nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub \u0026\u0026 if echo "$KEY_SHA512 */tmp/nginx_signing.rsa.pub" | sha512sum -c -; then echo "key verification succeeded!"; mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/; else echo "key verification failed!"; exit 1; fi \u0026\u0026 apk add -X "https://nginx.org/packages/mainline/alpine/v$(egrep -o \'^[0-9]+\\.[0-9]+\' /etc/alpine-release)/main" --no-cache $nginxPackages ;; *) set -x \u0026\u0026 tempDir="$(mktemp -d)" \u0026\u0026 chown nobody:nobody $tempDir \u0026\u0026 apk add --no-cache --virtual .build-deps gcc libc-dev make openssl-dev pcre2-dev zlib-dev linux-headers bash alpine-sdk findutils \u0026\u0026 su nobody -s /bin/sh -c " export HOME=${tempDir} \u0026\u0026 cd ${tempDir} \u0026\u0026 curl -f -O https://hg.nginx.org/pkg-oss/archive/${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 PKGOSSCHECKSUM=\\"8f3f6c1ddd984c0c7320d3bea25eee42749db6d69c251223cf91d69b8d80b703ab39eb94fcf731399a7693ebd8dd37d1b3232ea1184ca98e5ca0ba6165e1a05c *${NGINX_VERSION}-${PKG_RELEASE}.tar.gz\\" \u0026\u0026 if [ \\"\\$(openssl sha512 -r ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz)\\" = \\"\\$PKGOSSCHECKSUM\\" ]; then echo \\"pkg-oss tarball checksum verification succeeded!\\"; else echo \\"pkg-oss tarball checksum verification failed!\\"; exit 1; fi \u0026\u0026 tar xzvf ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 cd pkg-oss-${NGINX_VERSION}-${PKG_RELEASE} \u0026\u0026 cd alpine \u0026\u0026 make base \u0026\u0026 apk index -o ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz ${tempDir}/packages/alpine/${apkArch}/*.apk \u0026\u0026 abuild-sign -k ${tempDir}/.abuild/abuild-key.rsa ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz " \u0026\u0026 cp ${tempDir}/.abuild/abuild-key.rsa.pub /etc/apk/keys/ \u0026\u0026 apk del .build-deps \u0026\u0026 apk add -X ${tempDir}/packages/alpine/ --no-cache $nginxPackages ;; esac \u0026\u0026 apk del .checksum-deps \u0026\u0026 if [ -n "$tempDir" ]; then rm -rf "$tempDir"; fi \u0026\u0026 if [ -n "/etc/apk/keys/abuild-key.rsa.pub" ]; then rm -f /etc/apk/keys/abuild-key.rsa.pub; fi \u0026\u0026 if [ -n "/etc/apk/keys/nginx_signing.rsa.pub" ]; then rm -f /etc/apk/keys/nginx_signing.rsa.pub; fi \u0026\u0026 apk add --no-cache --virtual .gettext gettext \u0026\u0026 mv /usr/bin/envsubst /tmp/ \u0026\u0026 runDeps="$( scanelf --needed --nobanner /tmp/envsubst | awk \'{ gsub(/,/, "\\nso:", $2); print "so:" $2 }\' | sort -u | xargs -r apk info --installed | sort -u )" \u0026\u0026 apk add --no-cache $runDeps \u0026\u0026 apk del .gettext \u0026\u0026 mv /tmp/envsubst /usr/local/bin/ \u0026\u0026 apk add --no-cache tzdata \u0026\u0026 ln -sf /dev/stdout /var/log/nginx/access.log \u0026\u0026 ln -sf /dev/stderr /var/log/nginx/error.log \u0026\u0026 mkdir /docker-entrypoint.d',
},
{
'created': '2023-03-29T19:27:44.660812167Z',
'created_by':
'/bin/sh -c #(nop) COPY file:7b307b62e82255f040c9812421a30090bf9abf3685f27b02d77fcca99f997911 in / ',
},
{
'created': '2023-03-29T19:27:44.758007971Z',
'created_by':
'/bin/sh -c #(nop) COPY file:5c18272734349488bd0c94ec8d382c872c1a0a435cca13bd4671353d6021d2cb in /docker-entrypoint.d ',
},
{
'created': '2023-03-29T19:27:44.849497713Z',
'created_by':
'/bin/sh -c #(nop) COPY file:abbcbf84dc17ee4454b6b2e3cf914be88e02cf84d344ec45a5b31235379d722a in /docker-entrypoint.d ',
},
{
'created': '2023-03-29T19:27:44.941848809Z',
'created_by':
'/bin/sh -c #(nop) COPY file:e57eef017a414ca793499729d80a7b9075790c9a804f930f1417e56d506970cf in /docker-entrypoint.d ',
},
{
'created': '2023-03-29T19:27:45.021738784Z',
'created_by': '/bin/sh -c #(nop) ENTRYPOINT ["/docker-entrypoint.sh"]',
'empty_layer': true,
},
{ 'created': '2023-03-29T19:27:45.104459469Z', 'created_by': '/bin/sh -c #(nop) EXPOSE 80', 'empty_layer': true },
{
'created': '2023-03-29T19:27:45.186875746Z',
'created_by': '/bin/sh -c #(nop) STOPSIGNAL SIGQUIT',
'empty_layer': true,
},
{
'created': '2023-03-29T19:27:45.267774313Z',
'created_by': '/bin/sh -c #(nop) CMD ["nginx" "-g" "daemon off;"]',
'empty_layer': true,
},
{
'created': '2023-03-29T19:29:39.602231315Z',
'created_by': '/bin/sh -c #(nop) ENV NJS_VERSION=0.7.11',
'empty_layer': true,
},
{
'created': '2023-03-29T19:31:21.652098356Z',
'created_by':
'/bin/sh -c set -x \u0026\u0026 apkArch="$(cat /etc/apk/arch)" \u0026\u0026 nginxPackages=" nginx=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-xslt=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-geoip=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-image-filter=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-njs=${NGINX_VERSION}.${NJS_VERSION}-r${PKG_RELEASE} " \u0026\u0026 apk add --no-cache --virtual .checksum-deps openssl \u0026\u0026 case "$apkArch" in x86_64|aarch64) set -x \u0026\u0026 KEY_SHA512="e09fa32f0a0eab2b879ccbbc4d0e4fb9751486eedda75e35fac65802cc9faa266425edf83e261137a2f4d16281ce2c1a5f4502930fe75154723da014214f0655" \u0026\u0026 wget -O /tmp/nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub \u0026\u0026 if echo "$KEY_SHA512 */tmp/nginx_signing.rsa.pub" | sha512sum -c -; then echo "key verification succeeded!"; mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/; else echo "key verification failed!"; exit 1; fi \u0026\u0026 apk add -X "https://nginx.org/packages/mainline/alpine/v$(egrep -o \'^[0-9]+\\.[0-9]+\' /etc/alpine-release)/main" --no-cache $nginxPackages ;; *) set -x \u0026\u0026 tempDir="$(mktemp -d)" \u0026\u0026 chown nobody:nobody $tempDir \u0026\u0026 apk add --no-cache --virtual .build-deps gcc libc-dev make openssl-dev pcre2-dev zlib-dev linux-headers libxslt-dev gd-dev geoip-dev libedit-dev bash alpine-sdk findutils \u0026\u0026 su nobody -s /bin/sh -c " export HOME=${tempDir} \u0026\u0026 cd ${tempDir} \u0026\u0026 curl -f -O https://hg.nginx.org/pkg-oss/archive/${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 PKGOSSCHECKSUM=\\"8f3f6c1ddd984c0c7320d3bea25eee42749db6d69c251223cf91d69b8d80b703ab39eb94fcf731399a7693ebd8dd37d1b3232ea1184ca98e5ca0ba6165e1a05c *${NGINX_VERSION}-${PKG_RELEASE}.tar.gz\\" \u0026\u0026 if [ \\"\\$(openssl sha512 -r ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz)\\" = \\"\\$PKGOSSCHECKSUM\\" ]; then echo \\"pkg-oss tarball checksum verification succeeded!\\"; else echo \\"pkg-oss tarball checksum verification failed!\\"; exit 1; fi \u0026\u0026 tar xzvf ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 cd pkg-oss-${NGINX_VERSION}-${PKG_RELEASE} \u0026\u0026 cd alpine \u0026\u0026 make module-geoip module-image-filter module-njs module-xslt \u0026\u0026 apk index -o ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz ${tempDir}/packages/alpine/${apkArch}/*.apk \u0026\u0026 abuild-sign -k ${tempDir}/.abuild/abuild-key.rsa ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz " \u0026\u0026 cp ${tempDir}/.abuild/abuild-key.rsa.pub /etc/apk/keys/ \u0026\u0026 apk del .build-deps \u0026\u0026 apk add -X ${tempDir}/packages/alpine/ --no-cache $nginxPackages ;; esac \u0026\u0026 apk del .checksum-deps \u0026\u0026 if [ -n "$tempDir" ]; then rm -rf "$tempDir"; fi \u0026\u0026 if [ -n "/etc/apk/keys/abuild-key.rsa.pub" ]; then rm -f /etc/apk/keys/abuild-key.rsa.pub; fi \u0026\u0026 if [ -n "/etc/apk/keys/nginx_signing.rsa.pub" ]; then rm -f /etc/apk/keys/nginx_signing.rsa.pub; fi \u0026\u0026 apk add --no-cache curl ca-certificates',
},
{
'created': '2023-05-18T06:18:36.4191662Z',
'created_by': 'LABEL maintainer=Jones MAGLOIRE @Joxit',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-18T06:18:36.4191662Z',
'created_by': 'WORKDIR /usr/share/nginx/html/',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-18T06:18:36.4191662Z',
'created_by': 'ENV NGINX_PROXY_HEADER_Host=$http_host',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-18T06:18:36.4191662Z',
'created_by': 'ENV NGINX_LISTEN_PORT=80',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-18T06:18:36.4191662Z',
'created_by': 'ENV SHOW_CATALOG_NB_TAGS=false',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-18T06:18:36.433173058Z',
'created_by': 'COPY nginx/default.conf /etc/nginx/conf.d/default.conf # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-18T06:18:36.446926669Z',
'created_by': 'COPY bin/90-docker-registry-ui.sh /docker-entrypoint.d/90-docker-registry-ui.sh # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-18T06:18:36.464433643Z',
'created_by': 'COPY dist/ /usr/share/nginx/html/ # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-18T06:18:36.479417246Z',
'created_by': 'COPY favicon.ico /usr/share/nginx/html/ # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-18T06:18:36.698896035Z',
'created_by':
'RUN /bin/sh -c chown -R nginx:nginx /etc/nginx/ /usr/share/nginx/html/ /var/cache/nginx # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
],
'moby.buildkit.buildinfo.v1':
'eyJmcm9udGVuZCI6ImRvY2tlcmZpbGUudjAiLCJzb3VyY2VzIjpbeyJ0eXBlIjoiZG9ja2VyLWltYWdlIiwicmVmIjoiZG9ja2VyLmlvL2xpYnJhcnkvbmdpbng6YWxwaW5lIiwicGluIjoic2hhMjU2OjAyZmZkNDM5YjcxZDllYTk0MDhlNDQ5YjU2OGY2NWMwYmJiYjk0YmViZDg3NTBmMWQ4MDIzMWFiNjQ5NjAwOGUifV19',
'os': 'linux',
'rootfs': {
'type': 'layers',
'diff_ids': [
'sha256:0b9ff86f9940609d912c3e621dd6adad477087fbfc4c31c61d654a22a0f11b61',
'sha256:f60190c8cdc262062bd7d42a07cadde6791c8449f3421dff1223bfc36a9caf82',
'sha256:e327072a6a7f45d0af7c04f57d4729a7562f5aaca9377f0ffab6d9fd120f6ec5',
'sha256:c26ebf2a190d73b49a5e7bb779f33448d5fbf1a0a36236510621b758790ae793',
'sha256:6af30f71b3afff8b63313da78bda5d7b7fee2216be594cb2fc7f19a3ce69a14a',
'sha256:2bfd4c9ec145aaf73c515d20d10f1f03e7043c191134b7bcbb75013f016c68fc',
'sha256:b1f07242859d323324ee74a7221806532d71a0cb52f1463e9c1f661d4293fabb',
'sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef',
'sha256:00fd9ea6d2874d964d55c800e9ea9f812c9b6a4e8e342990f79c317b96545495',
'sha256:90eeeac365c62a487016298dfd4dae3aef0662f243b2a6f8030c0a3cefebf0aa',
'sha256:684c2527abcba7d7b72bef753728e030093aa6ac748e0d46034c94dc50bc8780',
'sha256:2e0de70327c6edd8680cacf8213f2dfbae8da5f2e3da03765046c220c4e56b88',
'sha256:282631fc20d0d4585c4ff9b37ffe0bd7b9e34834c9902d1f7934ce07fe3264a3',
],
},
'variant': 'v7',
};
export const dockerManifestList = {
'application/vnd.docker.distribution.manifest.list.v2+json': manifestList,
manifestList,
'sha256:7d9bbfa92dbd2a9c09abe924ee7cb8f164be59f25b9457fa0c593a7110dba89f': manifestAmd64,
manifestAmd64,
'sha256:5ef7a7d411a524beff05c9d1a541442ff78bb1ec6b45a55434dd3e51e00292b1': manifestArm,
manifestArm,
'sha256:7209907f3aa39f8b259069272274f185c4e9772ea7159722728b5f648c71eaad': blobAmd64,
blobAmd64,
'sha256:322f0eb73bbb441e1a0eae5dd05dfa56d7bc78b2be4682056463d919393b7d0b': blobArm,
blobArm,
};

137
test/fixtures/oci-image-index-layer.js vendored Normal file
View File

@ -0,0 +1,137 @@
/**
* Index of an image created with:
* buildctl build --frontend=dockerfile.v0 --local context=. --local dockerfile=. --export-cache type=registry,ref=joxit/docker-registry-ui:buildkit
*/
const imageIndex = {
'schemaVersion': 2,
'mediaType': 'application/vnd.oci.image.index.v1+json',
'manifests': [
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:1f21f983520d9a440d410ea62eb0bda61a2b50dd79878071181b56b82efa9ef3',
'size': 1404,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:52.396770851+02:00',
'containerd.io/uncompressed': 'sha256:f9cb3f1f1d3d7c591c4ab02118816fe6761a8f2f7b2500a5ec7421a42b8a5ea2',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:232b62d5fcb5fc034d54170fd0e93e62b4f0eb357b23f99fc70edfd514e68688',
'size': 878138,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:53.358118651+02:00',
'containerd.io/uncompressed': 'sha256:da6ab5dba3f3f7a67cee1b384e5c3e76dc6daffe31c8da7d7b8944b010146deb',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:2ce963c369bc5690378d31c51dc575c7035f6adfcc1e286051b5a5d9a7b0cc5c',
'size': 1799036,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:52.374638832+02:00',
'containerd.io/uncompressed': 'sha256:1003ff723696bfd596cd65592fa26554840e90780f6937e6ddccc909b8ed1443',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:3e1e579c95fece6bbe0cb9c8c2949512a3f8caaf9dbe6219dc6495abb9902040',
'size': 956,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:52.386713549+02:00',
'containerd.io/uncompressed': 'sha256:c1cd5c8c68ef2336b2504336206d58931e9215a863a35a741f66aa3f4970b0f5',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1',
'size': 32,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:53.299566674+02:00',
'containerd.io/uncompressed': 'sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:547a97583f72a32903ca1357d48fa302e91e8f83ffa18e0c40fd87adb5c06025',
'size': 773,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:52.392007164+02:00',
'containerd.io/uncompressed': 'sha256:f0fb842dea4179a94f1b8c2ac178e72690fa2b30e25e03a7a7893794fe9520a5',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:59b9d2200e632e457f800814693b3a01adf09a244c38ebe8d3beef5c476c4c55',
'size': 626,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:52.382010266+02:00',
'containerd.io/uncompressed': 'sha256:1d54586a1706c0af48668c10cbd8246626acb4fec01287be54cd9b26d72df15d',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:91a97e9af03b8531316a2f1418c03e329d0d1e261d6e193435263f3c7506d9ea',
'size': 18328,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:53.375505685+02:00',
'containerd.io/uncompressed': 'sha256:233ce4876ce17521a29b279dfa36dc690a85faca59b64ee5b8b7aa2d1f89dfa9',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:9b5968b53397e19a4a0ba7e49f0f29fa274fe0bdb4827720a69b50a9241f7281',
'size': 900650,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:53.54931788+02:00',
'containerd.io/uncompressed': 'sha256:9cf4861c81b63e36381c165dfac7c6f44877ec30d562f401b49a625e059f34d6',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:c23b4f8cf279507bb1dd3d6eb2d15ca84fac9eac215ab5b529aa8b5a060294c8',
'size': 11607291,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:52.401595965+02:00',
'containerd.io/uncompressed': 'sha256:31531248c7cbf5b31a8d9695c20041b9b3749b8c04b9831331ad93333fcf1474',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:efc25abc67f8fa9710cbfbb82588504708f18bca00a2a8a6fcc09fc71e72f10b',
'size': 1023,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:53.324178797+02:00',
'containerd.io/uncompressed': 'sha256:2596c2188541b87815b21a34838862ca037720785f6e150fd410213555c4aab1',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:f56be85fc22e46face30e2c3de3f7fe7c15f8fd7c4e5add29d7f64b87abdaa09',
'size': 3374563,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:52.358761758+02:00',
'containerd.io/uncompressed': 'sha256:f1417ff83b319fbdae6dd9cd6d8c9c88002dcd75ecf6ec201c8c6894681cf2b5',
},
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:fd6b87e430ca8d0742c0cae2e0bd472ae024851526a39e3a7fe6dd15fed45224',
'size': 954,
'annotations': {
'buildkit/createdat': '2023-05-17T22:25:53.33927092+02:00',
'containerd.io/uncompressed': 'sha256:f04b4697ffd252d7a0080dcc83c0790e9962db6cf74d3450960e03e16cf1e747',
},
},
{
'mediaType': 'application/vnd.buildkit.cacheconfig.v0',
'digest': 'sha256:b7d18f694c1dcf673bc8e56dbdc05a3441a0ae000f05dbc3f34f42ac9f060ef9',
'size': 2908,
},
],
};
export const ociImageIndexLayer = {
'application/vnd.oci.image.index.v1+json': imageIndex,
imageIndex,
};

View File

@ -0,0 +1,561 @@
/**
* Manifest of an image created with:
* docker buildx build --platform amd64,arm -t joxit/docker-registry-ui:buildx --push --provenance true .
*/
const imageIndex = {
'mediaType': 'application/vnd.oci.image.index.v1+json',
'schemaVersion': 2,
'manifests': [
{
'mediaType': 'application/vnd.oci.image.manifest.v1+json',
'digest': 'sha256:868d96eea2ab3b0905caa746339541cef30ed4e0864da7f89e423cb50aee7857',
'size': 2756,
'platform': { 'architecture': 'amd64', 'os': 'linux' },
},
{
'mediaType': 'application/vnd.oci.image.manifest.v1+json',
'digest': 'sha256:ee45307ae7404ccfbe4536677095b1ad1258a261c79ecdf5640d24bec66e1257',
'size': 2756,
'platform': { 'architecture': 'arm64', 'os': 'linux' },
},
{
'mediaType': 'application/vnd.oci.image.manifest.v1+json',
'digest': 'sha256:2d0c98dae3c1936ef04d00554f9b2557cbdd1f2aa84226758fa77e84a7326f98',
'size': 566,
'annotations': {
'vnd.docker.reference.digest': 'sha256:868d96eea2ab3b0905caa746339541cef30ed4e0864da7f89e423cb50aee7857',
'vnd.docker.reference.type': 'attestation-manifest',
},
'platform': { 'architecture': 'unknown', 'os': 'unknown' },
},
{
'mediaType': 'application/vnd.oci.image.manifest.v1+json',
'digest': 'sha256:f239e839c36a0fc3bd9d4a6152d7a83522002bfbf09836f0a3b20613afe27d97',
'size': 566,
'annotations': {
'vnd.docker.reference.digest': 'sha256:ee45307ae7404ccfbe4536677095b1ad1258a261c79ecdf5640d24bec66e1257',
'vnd.docker.reference.type': 'attestation-manifest',
},
'platform': { 'architecture': 'unknown', 'os': 'unknown' },
},
],
};
const manifestAmd64 = {
'mediaType': 'application/vnd.oci.image.manifest.v1+json',
'schemaVersion': 2,
'config': {
'mediaType': 'application/vnd.oci.image.config.v1+json',
'digest': 'sha256:7209907f3aa39f8b259069272274f185c4e9772ea7159722728b5f648c71eaad',
'size': 13772,
},
'layers': [
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:f56be85fc22e46face30e2c3de3f7fe7c15f8fd7c4e5add29d7f64b87abdaa09',
'size': 3374563,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:2ce963c369bc5690378d31c51dc575c7035f6adfcc1e286051b5a5d9a7b0cc5c',
'size': 1799036,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:59b9d2200e632e457f800814693b3a01adf09a244c38ebe8d3beef5c476c4c55',
'size': 626,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:3e1e579c95fece6bbe0cb9c8c2949512a3f8caaf9dbe6219dc6495abb9902040',
'size': 956,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:547a97583f72a32903ca1357d48fa302e91e8f83ffa18e0c40fd87adb5c06025',
'size': 773,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:1f21f983520d9a440d410ea62eb0bda61a2b50dd79878071181b56b82efa9ef3',
'size': 1404,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:c23b4f8cf279507bb1dd3d6eb2d15ca84fac9eac215ab5b529aa8b5a060294c8',
'size': 11607291,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1',
'size': 32,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:a5a652ffc299e3af7414a7c48a8b287785c0c70d7e7712cc81da43cfd18dc677',
'size': 1023,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:ac35a311bcf31486bf05fb0a0b66dd1fb313f8ac6b631c07662f5c77a017b142',
'size': 953,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:0bbe5bab7d19c248fd83f1d7746b306b1590118dcdab99cf49b72cec4f744a15',
'size': 878128,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:b516cdaec2158585780cfe13e196fbd6ee4e2aed81d1007903da60df2a6f8d12',
'size': 18327,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:c93af1909df12d053ee3b101b005c15312dedeee3d18c2f23a3aa3776693a0f5',
'size': 900629,
},
],
};
const manifestArm = {
'mediaType': 'application/vnd.oci.image.manifest.v1+json',
'schemaVersion': 2,
'config': {
'mediaType': 'application/vnd.oci.image.config.v1+json',
'digest': 'sha256:6d0a94a37f413ae834a226070fb042386303fd80ac79c6d4a12e986a03416710',
'size': 13771,
},
'layers': [
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:c41833b44d910632b415cd89a9cdaa4d62c9725dc56c99a7ddadafd6719960f9',
'size': 3261854,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:2c2c9b85ac58c9f389d42b1033672337110dba86c12d1b0d5c7c384a7cfe110b',
'size': 1788526,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:40f94fa3619489012a181c2b217548ea718fe485578eec4afdef4b14b3bc536e',
'size': 624,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:ae26f20697dc7e3b86701a83a1ed42b81b1755f0763130d7f6f816a39adaf388',
'size': 956,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:e4fa283fba0e8150c05ba453aed98ff4f4bdd65a6248837101fc16b489d1101e',
'size': 770,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:4c53b6cdc37bcca61cf31d3308b58fda6d7d3192ddd56559cca2f67eafcb0cc1',
'size': 1403,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:7bcac465295e8cfefa26d0ad33a638a0415ad7c4e1afba500b9633f97e277c3c',
'size': 11108102,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1',
'size': 32,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:7923ad4ef26285d800ddad2f7a82d428d035aafd6d6029c4bb23b2b8ac53f699',
'size': 1026,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:ac35a311bcf31486bf05fb0a0b66dd1fb313f8ac6b631c07662f5c77a017b142',
'size': 953,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:cb284b84c5d00c523b11f6fa3ee3886f20b146a0f6bc70160bc6e43a3a525dcc',
'size': 878125,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:ed35f24b7cbe4d56ab109eb77be92a68460b8f932b2a42ddde9296ee7805070a',
'size': 18329,
},
{
'mediaType': 'application/vnd.oci.image.layer.v1.tar+gzip',
'digest': 'sha256:ea6ae72ae0bc46efb9381c62a0c9f01b7d1ad2cf67dc3ec58ef8b4ff91a145f1',
'size': 900638,
},
],
};
const blobAmd64 = {
'architecture': 'amd64',
'config': {
'ExposedPorts': { '80/tcp': {} },
'Env': [
'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
'NGINX_VERSION=1.23.4',
'PKG_RELEASE=1',
'NJS_VERSION=0.7.11',
'NGINX_PROXY_HEADER_Host=$http_host',
'NGINX_LISTEN_PORT=80',
'SHOW_CATALOG_NB_TAGS=false',
],
'Entrypoint': ['/docker-entrypoint.sh'],
'Cmd': ['nginx', '-g', 'daemon off;'],
'WorkingDir': '/usr/share/nginx/html/',
'Labels': { 'maintainer': 'Jones MAGLOIRE @Joxit' },
'StopSignal': 'SIGQUIT',
'OnBuild': null,
},
'created': '2023-05-16T17:53:59.778774465Z',
'history': [
{
'created': '2023-03-29T18:19:24.348438709Z',
'created_by': '/bin/sh -c #(nop) ADD file:9a4f77dfaba7fd2aa78186e4ef0e7486ad55101cefc1fabbc1b385601bb38920 in / ',
},
{
'created': '2023-03-29T18:19:24.45578926Z',
'created_by': '/bin/sh -c #(nop) CMD ["/bin/sh"]',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:10.826996048Z',
'created_by': '/bin/sh -c #(nop) LABEL maintainer=NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:10.902296598Z',
'created_by': '/bin/sh -c #(nop) ENV NGINX_VERSION=1.23.4',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:10.975496976Z',
'created_by': '/bin/sh -c #(nop) ENV PKG_RELEASE=1',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:16.216540441Z',
'created_by':
'/bin/sh -c set -x \u0026\u0026 addgroup -g 101 -S nginx \u0026\u0026 adduser -S -D -H -u 101 -h /var/cache/nginx -s /sbin/nologin -G nginx -g nginx nginx \u0026\u0026 apkArch="$(cat /etc/apk/arch)" \u0026\u0026 nginxPackages=" nginx=${NGINX_VERSION}-r${PKG_RELEASE} " \u0026\u0026 apk add --no-cache --virtual .checksum-deps openssl \u0026\u0026 case "$apkArch" in x86_64|aarch64) set -x \u0026\u0026 KEY_SHA512="e09fa32f0a0eab2b879ccbbc4d0e4fb9751486eedda75e35fac65802cc9faa266425edf83e261137a2f4d16281ce2c1a5f4502930fe75154723da014214f0655" \u0026\u0026 wget -O /tmp/nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub \u0026\u0026 if echo "$KEY_SHA512 */tmp/nginx_signing.rsa.pub" | sha512sum -c -; then echo "key verification succeeded!"; mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/; else echo "key verification failed!"; exit 1; fi \u0026\u0026 apk add -X "https://nginx.org/packages/mainline/alpine/v$(egrep -o \'^[0-9]+\\.[0-9]+\' /etc/alpine-release)/main" --no-cache $nginxPackages ;; *) set -x \u0026\u0026 tempDir="$(mktemp -d)" \u0026\u0026 chown nobody:nobody $tempDir \u0026\u0026 apk add --no-cache --virtual .build-deps gcc libc-dev make openssl-dev pcre2-dev zlib-dev linux-headers bash alpine-sdk findutils \u0026\u0026 su nobody -s /bin/sh -c " export HOME=${tempDir} \u0026\u0026 cd ${tempDir} \u0026\u0026 curl -f -O https://hg.nginx.org/pkg-oss/archive/${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 PKGOSSCHECKSUM=\\"8f3f6c1ddd984c0c7320d3bea25eee42749db6d69c251223cf91d69b8d80b703ab39eb94fcf731399a7693ebd8dd37d1b3232ea1184ca98e5ca0ba6165e1a05c *${NGINX_VERSION}-${PKG_RELEASE}.tar.gz\\" \u0026\u0026 if [ \\"\\$(openssl sha512 -r ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz)\\" = \\"\\$PKGOSSCHECKSUM\\" ]; then echo \\"pkg-oss tarball checksum verification succeeded!\\"; else echo \\"pkg-oss tarball checksum verification failed!\\"; exit 1; fi \u0026\u0026 tar xzvf ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 cd pkg-oss-${NGINX_VERSION}-${PKG_RELEASE} \u0026\u0026 cd alpine \u0026\u0026 make base \u0026\u0026 apk index -o ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz ${tempDir}/packages/alpine/${apkArch}/*.apk \u0026\u0026 abuild-sign -k ${tempDir}/.abuild/abuild-key.rsa ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz " \u0026\u0026 cp ${tempDir}/.abuild/abuild-key.rsa.pub /etc/apk/keys/ \u0026\u0026 apk del .build-deps \u0026\u0026 apk add -X ${tempDir}/packages/alpine/ --no-cache $nginxPackages ;; esac \u0026\u0026 apk del .checksum-deps \u0026\u0026 if [ -n "$tempDir" ]; then rm -rf "$tempDir"; fi \u0026\u0026 if [ -n "/etc/apk/keys/abuild-key.rsa.pub" ]; then rm -f /etc/apk/keys/abuild-key.rsa.pub; fi \u0026\u0026 if [ -n "/etc/apk/keys/nginx_signing.rsa.pub" ]; then rm -f /etc/apk/keys/nginx_signing.rsa.pub; fi \u0026\u0026 apk add --no-cache --virtual .gettext gettext \u0026\u0026 mv /usr/bin/envsubst /tmp/ \u0026\u0026 runDeps="$( scanelf --needed --nobanner /tmp/envsubst | awk \'{ gsub(/,/, "\\nso:", $2); print "so:" $2 }\' | sort -u | xargs -r apk info --installed | sort -u )" \u0026\u0026 apk add --no-cache $runDeps \u0026\u0026 apk del .gettext \u0026\u0026 mv /tmp/envsubst /usr/local/bin/ \u0026\u0026 apk add --no-cache tzdata \u0026\u0026 ln -sf /dev/stdout /var/log/nginx/access.log \u0026\u0026 ln -sf /dev/stderr /var/log/nginx/error.log \u0026\u0026 mkdir /docker-entrypoint.d',
},
{
'created': '2023-03-29T22:31:16.339435018Z',
'created_by':
'/bin/sh -c #(nop) COPY file:7b307b62e82255f040c9812421a30090bf9abf3685f27b02d77fcca99f997911 in / ',
},
{
'created': '2023-03-29T22:31:16.427781358Z',
'created_by':
'/bin/sh -c #(nop) COPY file:5c18272734349488bd0c94ec8d382c872c1a0a435cca13bd4671353d6021d2cb in /docker-entrypoint.d ',
},
{
'created': '2023-03-29T22:31:16.515135125Z',
'created_by':
'/bin/sh -c #(nop) COPY file:abbcbf84dc17ee4454b6b2e3cf914be88e02cf84d344ec45a5b31235379d722a in /docker-entrypoint.d ',
},
{
'created': '2023-03-29T22:31:16.601542115Z',
'created_by':
'/bin/sh -c #(nop) COPY file:e57eef017a414ca793499729d80a7b9075790c9a804f930f1417e56d506970cf in /docker-entrypoint.d ',
},
{
'created': '2023-03-29T22:31:16.678093757Z',
'created_by': '/bin/sh -c #(nop) ENTRYPOINT ["/docker-entrypoint.sh"]',
'empty_layer': true,
},
{ 'created': '2023-03-29T22:31:16.756398749Z', 'created_by': '/bin/sh -c #(nop) EXPOSE 80', 'empty_layer': true },
{
'created': '2023-03-29T22:31:16.839607817Z',
'created_by': '/bin/sh -c #(nop) STOPSIGNAL SIGQUIT',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:16.921795894Z',
'created_by': '/bin/sh -c #(nop) CMD ["nginx" "-g" "daemon off;"]',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:30.252298671Z',
'created_by': '/bin/sh -c #(nop) ENV NJS_VERSION=0.7.11',
'empty_layer': true,
},
{
'created': '2023-03-29T22:31:35.828698308Z',
'created_by':
'/bin/sh -c set -x \u0026\u0026 apkArch="$(cat /etc/apk/arch)" \u0026\u0026 nginxPackages=" nginx=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-xslt=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-geoip=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-image-filter=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-njs=${NGINX_VERSION}.${NJS_VERSION}-r${PKG_RELEASE} " \u0026\u0026 apk add --no-cache --virtual .checksum-deps openssl \u0026\u0026 case "$apkArch" in x86_64|aarch64) set -x \u0026\u0026 KEY_SHA512="e09fa32f0a0eab2b879ccbbc4d0e4fb9751486eedda75e35fac65802cc9faa266425edf83e261137a2f4d16281ce2c1a5f4502930fe75154723da014214f0655" \u0026\u0026 wget -O /tmp/nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub \u0026\u0026 if echo "$KEY_SHA512 */tmp/nginx_signing.rsa.pub" | sha512sum -c -; then echo "key verification succeeded!"; mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/; else echo "key verification failed!"; exit 1; fi \u0026\u0026 apk add -X "https://nginx.org/packages/mainline/alpine/v$(egrep -o \'^[0-9]+\\.[0-9]+\' /etc/alpine-release)/main" --no-cache $nginxPackages ;; *) set -x \u0026\u0026 tempDir="$(mktemp -d)" \u0026\u0026 chown nobody:nobody $tempDir \u0026\u0026 apk add --no-cache --virtual .build-deps gcc libc-dev make openssl-dev pcre2-dev zlib-dev linux-headers libxslt-dev gd-dev geoip-dev libedit-dev bash alpine-sdk findutils \u0026\u0026 su nobody -s /bin/sh -c " export HOME=${tempDir} \u0026\u0026 cd ${tempDir} \u0026\u0026 curl -f -O https://hg.nginx.org/pkg-oss/archive/${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 PKGOSSCHECKSUM=\\"8f3f6c1ddd984c0c7320d3bea25eee42749db6d69c251223cf91d69b8d80b703ab39eb94fcf731399a7693ebd8dd37d1b3232ea1184ca98e5ca0ba6165e1a05c *${NGINX_VERSION}-${PKG_RELEASE}.tar.gz\\" \u0026\u0026 if [ \\"\\$(openssl sha512 -r ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz)\\" = \\"\\$PKGOSSCHECKSUM\\" ]; then echo \\"pkg-oss tarball checksum verification succeeded!\\"; else echo \\"pkg-oss tarball checksum verification failed!\\"; exit 1; fi \u0026\u0026 tar xzvf ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 cd pkg-oss-${NGINX_VERSION}-${PKG_RELEASE} \u0026\u0026 cd alpine \u0026\u0026 make module-geoip module-image-filter module-njs module-xslt \u0026\u0026 apk index -o ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz ${tempDir}/packages/alpine/${apkArch}/*.apk \u0026\u0026 abuild-sign -k ${tempDir}/.abuild/abuild-key.rsa ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz " \u0026\u0026 cp ${tempDir}/.abuild/abuild-key.rsa.pub /etc/apk/keys/ \u0026\u0026 apk del .build-deps \u0026\u0026 apk add -X ${tempDir}/packages/alpine/ --no-cache $nginxPackages ;; esac \u0026\u0026 apk del .checksum-deps \u0026\u0026 if [ -n "$tempDir" ]; then rm -rf "$tempDir"; fi \u0026\u0026 if [ -n "/etc/apk/keys/abuild-key.rsa.pub" ]; then rm -f /etc/apk/keys/abuild-key.rsa.pub; fi \u0026\u0026 if [ -n "/etc/apk/keys/nginx_signing.rsa.pub" ]; then rm -f /etc/apk/keys/nginx_signing.rsa.pub; fi \u0026\u0026 apk add --no-cache curl ca-certificates',
},
{
'created': '2023-05-16T17:53:59.527106164Z',
'created_by': 'LABEL maintainer=Jones MAGLOIRE @Joxit',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.527106164Z',
'created_by': 'WORKDIR /usr/share/nginx/html/',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.527106164Z',
'created_by': 'ENV NGINX_PROXY_HEADER_Host=$http_host',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.527106164Z',
'created_by': 'ENV NGINX_LISTEN_PORT=80',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.527106164Z',
'created_by': 'ENV SHOW_CATALOG_NB_TAGS=false',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.549089552Z',
'created_by': 'COPY nginx/default.conf /etc/nginx/conf.d/default.conf # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.605792395Z',
'created_by': 'COPY bin/90-docker-registry-ui.sh /docker-entrypoint.d/90-docker-registry-ui.sh # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.627224324Z',
'created_by': 'COPY dist/ /usr/share/nginx/html/ # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.644817137Z',
'created_by': 'COPY favicon.ico /usr/share/nginx/html/ # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.778774465Z',
'created_by':
'RUN /bin/sh -c chown -R nginx:nginx /etc/nginx/ /usr/share/nginx/html/ /var/cache/nginx # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
],
'moby.buildkit.buildinfo.v1':
'eyJmcm9udGVuZCI6ImRvY2tlcmZpbGUudjAiLCJzb3VyY2VzIjpbeyJ0eXBlIjoiZG9ja2VyLWltYWdlIiwicmVmIjoiZG9ja2VyLmlvL2xpYnJhcnkvbmdpbng6YWxwaW5lIiwicGluIjoic2hhMjU2OjAyZmZkNDM5YjcxZDllYTk0MDhlNDQ5YjU2OGY2NWMwYmJiYjk0YmViZDg3NTBmMWQ4MDIzMWFiNjQ5NjAwOGUifV19',
'os': 'linux',
'rootfs': {
'type': 'layers',
'diff_ids': [
'sha256:f1417ff83b319fbdae6dd9cd6d8c9c88002dcd75ecf6ec201c8c6894681cf2b5',
'sha256:1003ff723696bfd596cd65592fa26554840e90780f6937e6ddccc909b8ed1443',
'sha256:1d54586a1706c0af48668c10cbd8246626acb4fec01287be54cd9b26d72df15d',
'sha256:c1cd5c8c68ef2336b2504336206d58931e9215a863a35a741f66aa3f4970b0f5',
'sha256:f0fb842dea4179a94f1b8c2ac178e72690fa2b30e25e03a7a7893794fe9520a5',
'sha256:f9cb3f1f1d3d7c591c4ab02118816fe6761a8f2f7b2500a5ec7421a42b8a5ea2',
'sha256:31531248c7cbf5b31a8d9695c20041b9b3749b8c04b9831331ad93333fcf1474',
'sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef',
'sha256:d2a2fde0ccbec9f84533eba6eae08e61456eae22cdb18cbd6770584a96de079c',
'sha256:417b58457dd524a2ab48d3b4d124910aaff0680035f71816ee6efb5fb08c784a',
'sha256:a8ecc6cb361d80fdf6d9a3149dcd7d3042cf1b26b45a6e591032033c98848de9',
'sha256:f5fe999227158f3d3649ac32585d981b74774e9d3b8f8254104395470753c751',
'sha256:3eaed6821acc2fcc0f298984d83dd9ca0317b028ed4a5b1cdcb58d4e1c6aec74',
],
},
};
const blobArm = {
'architecture': 'arm64',
'config': {
'ExposedPorts': { '80/tcp': {} },
'Env': [
'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
'NGINX_VERSION=1.23.4',
'PKG_RELEASE=1',
'NJS_VERSION=0.7.11',
'NGINX_PROXY_HEADER_Host=$http_host',
'NGINX_LISTEN_PORT=80',
'SHOW_CATALOG_NB_TAGS=false',
],
'Entrypoint': ['/docker-entrypoint.sh'],
'Cmd': ['nginx', '-g', 'daemon off;'],
'WorkingDir': '/usr/share/nginx/html/',
'Labels': { 'maintainer': 'Jones MAGLOIRE @Joxit' },
'StopSignal': 'SIGQUIT',
'OnBuild': null,
},
'created': '2023-05-16T17:54:00.037166004Z',
'history': [
{
'created': '2023-03-29T17:39:18.063622104Z',
'created_by': '/bin/sh -c #(nop) ADD file:e51d4089e73ad6dee52b31f0c8059a00c17df6e23f6741fe11b43bd84cc99008 in / ',
},
{
'created': '2023-03-29T17:39:18.167879762Z',
'created_by': '/bin/sh -c #(nop) CMD ["/bin/sh"]',
'empty_layer': true,
},
{
'created': '2023-03-30T04:22:48.660484906Z',
'created_by': '/bin/sh -c #(nop) LABEL maintainer=NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e',
'empty_layer': true,
},
{
'created': '2023-03-30T04:22:48.736880947Z',
'created_by': '/bin/sh -c #(nop) ENV NGINX_VERSION=1.23.4',
'empty_layer': true,
},
{
'created': '2023-03-30T04:22:48.811177358Z',
'created_by': '/bin/sh -c #(nop) ENV PKG_RELEASE=1',
'empty_layer': true,
},
{
'created': '2023-03-30T04:22:53.381662136Z',
'created_by':
'/bin/sh -c set -x \u0026\u0026 addgroup -g 101 -S nginx \u0026\u0026 adduser -S -D -H -u 101 -h /var/cache/nginx -s /sbin/nologin -G nginx -g nginx nginx \u0026\u0026 apkArch="$(cat /etc/apk/arch)" \u0026\u0026 nginxPackages=" nginx=${NGINX_VERSION}-r${PKG_RELEASE} " \u0026\u0026 apk add --no-cache --virtual .checksum-deps openssl \u0026\u0026 case "$apkArch" in x86_64|aarch64) set -x \u0026\u0026 KEY_SHA512="e09fa32f0a0eab2b879ccbbc4d0e4fb9751486eedda75e35fac65802cc9faa266425edf83e261137a2f4d16281ce2c1a5f4502930fe75154723da014214f0655" \u0026\u0026 wget -O /tmp/nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub \u0026\u0026 if echo "$KEY_SHA512 */tmp/nginx_signing.rsa.pub" | sha512sum -c -; then echo "key verification succeeded!"; mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/; else echo "key verification failed!"; exit 1; fi \u0026\u0026 apk add -X "https://nginx.org/packages/mainline/alpine/v$(egrep -o \'^[0-9]+\\.[0-9]+\' /etc/alpine-release)/main" --no-cache $nginxPackages ;; *) set -x \u0026\u0026 tempDir="$(mktemp -d)" \u0026\u0026 chown nobody:nobody $tempDir \u0026\u0026 apk add --no-cache --virtual .build-deps gcc libc-dev make openssl-dev pcre2-dev zlib-dev linux-headers bash alpine-sdk findutils \u0026\u0026 su nobody -s /bin/sh -c " export HOME=${tempDir} \u0026\u0026 cd ${tempDir} \u0026\u0026 curl -f -O https://hg.nginx.org/pkg-oss/archive/${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 PKGOSSCHECKSUM=\\"8f3f6c1ddd984c0c7320d3bea25eee42749db6d69c251223cf91d69b8d80b703ab39eb94fcf731399a7693ebd8dd37d1b3232ea1184ca98e5ca0ba6165e1a05c *${NGINX_VERSION}-${PKG_RELEASE}.tar.gz\\" \u0026\u0026 if [ \\"\\$(openssl sha512 -r ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz)\\" = \\"\\$PKGOSSCHECKSUM\\" ]; then echo \\"pkg-oss tarball checksum verification succeeded!\\"; else echo \\"pkg-oss tarball checksum verification failed!\\"; exit 1; fi \u0026\u0026 tar xzvf ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 cd pkg-oss-${NGINX_VERSION}-${PKG_RELEASE} \u0026\u0026 cd alpine \u0026\u0026 make base \u0026\u0026 apk index -o ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz ${tempDir}/packages/alpine/${apkArch}/*.apk \u0026\u0026 abuild-sign -k ${tempDir}/.abuild/abuild-key.rsa ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz " \u0026\u0026 cp ${tempDir}/.abuild/abuild-key.rsa.pub /etc/apk/keys/ \u0026\u0026 apk del .build-deps \u0026\u0026 apk add -X ${tempDir}/packages/alpine/ --no-cache $nginxPackages ;; esac \u0026\u0026 apk del .checksum-deps \u0026\u0026 if [ -n "$tempDir" ]; then rm -rf "$tempDir"; fi \u0026\u0026 if [ -n "/etc/apk/keys/abuild-key.rsa.pub" ]; then rm -f /etc/apk/keys/abuild-key.rsa.pub; fi \u0026\u0026 if [ -n "/etc/apk/keys/nginx_signing.rsa.pub" ]; then rm -f /etc/apk/keys/nginx_signing.rsa.pub; fi \u0026\u0026 apk add --no-cache --virtual .gettext gettext \u0026\u0026 mv /usr/bin/envsubst /tmp/ \u0026\u0026 runDeps="$( scanelf --needed --nobanner /tmp/envsubst | awk \'{ gsub(/,/, "\\nso:", $2); print "so:" $2 }\' | sort -u | xargs -r apk info --installed | sort -u )" \u0026\u0026 apk add --no-cache $runDeps \u0026\u0026 apk del .gettext \u0026\u0026 mv /tmp/envsubst /usr/local/bin/ \u0026\u0026 apk add --no-cache tzdata \u0026\u0026 ln -sf /dev/stdout /var/log/nginx/access.log \u0026\u0026 ln -sf /dev/stderr /var/log/nginx/error.log \u0026\u0026 mkdir /docker-entrypoint.d',
},
{
'created': '2023-03-30T04:22:53.48126766Z',
'created_by':
'/bin/sh -c #(nop) COPY file:7b307b62e82255f040c9812421a30090bf9abf3685f27b02d77fcca99f997911 in / ',
},
{
'created': '2023-03-30T04:22:53.552453825Z',
'created_by':
'/bin/sh -c #(nop) COPY file:5c18272734349488bd0c94ec8d382c872c1a0a435cca13bd4671353d6021d2cb in /docker-entrypoint.d ',
},
{
'created': '2023-03-30T04:22:53.624623412Z',
'created_by':
'/bin/sh -c #(nop) COPY file:abbcbf84dc17ee4454b6b2e3cf914be88e02cf84d344ec45a5b31235379d722a in /docker-entrypoint.d ',
},
{
'created': '2023-03-30T04:22:53.696466901Z',
'created_by':
'/bin/sh -c #(nop) COPY file:e57eef017a414ca793499729d80a7b9075790c9a804f930f1417e56d506970cf in /docker-entrypoint.d ',
},
{
'created': '2023-03-30T04:22:53.773577427Z',
'created_by': '/bin/sh -c #(nop) ENTRYPOINT ["/docker-entrypoint.sh"]',
'empty_layer': true,
},
{ 'created': '2023-03-30T04:22:53.855706883Z', 'created_by': '/bin/sh -c #(nop) EXPOSE 80', 'empty_layer': true },
{
'created': '2023-03-30T04:22:53.934315121Z',
'created_by': '/bin/sh -c #(nop) STOPSIGNAL SIGQUIT',
'empty_layer': true,
},
{
'created': '2023-03-30T04:22:54.010915592Z',
'created_by': '/bin/sh -c #(nop) CMD ["nginx" "-g" "daemon off;"]',
'empty_layer': true,
},
{
'created': '2023-03-30T04:23:05.898706916Z',
'created_by': '/bin/sh -c #(nop) ENV NJS_VERSION=0.7.11',
'empty_layer': true,
},
{
'created': '2023-03-30T04:23:11.319535457Z',
'created_by':
'/bin/sh -c set -x \u0026\u0026 apkArch="$(cat /etc/apk/arch)" \u0026\u0026 nginxPackages=" nginx=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-xslt=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-geoip=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-image-filter=${NGINX_VERSION}-r${PKG_RELEASE} nginx-module-njs=${NGINX_VERSION}.${NJS_VERSION}-r${PKG_RELEASE} " \u0026\u0026 apk add --no-cache --virtual .checksum-deps openssl \u0026\u0026 case "$apkArch" in x86_64|aarch64) set -x \u0026\u0026 KEY_SHA512="e09fa32f0a0eab2b879ccbbc4d0e4fb9751486eedda75e35fac65802cc9faa266425edf83e261137a2f4d16281ce2c1a5f4502930fe75154723da014214f0655" \u0026\u0026 wget -O /tmp/nginx_signing.rsa.pub https://nginx.org/keys/nginx_signing.rsa.pub \u0026\u0026 if echo "$KEY_SHA512 */tmp/nginx_signing.rsa.pub" | sha512sum -c -; then echo "key verification succeeded!"; mv /tmp/nginx_signing.rsa.pub /etc/apk/keys/; else echo "key verification failed!"; exit 1; fi \u0026\u0026 apk add -X "https://nginx.org/packages/mainline/alpine/v$(egrep -o \'^[0-9]+\\.[0-9]+\' /etc/alpine-release)/main" --no-cache $nginxPackages ;; *) set -x \u0026\u0026 tempDir="$(mktemp -d)" \u0026\u0026 chown nobody:nobody $tempDir \u0026\u0026 apk add --no-cache --virtual .build-deps gcc libc-dev make openssl-dev pcre2-dev zlib-dev linux-headers libxslt-dev gd-dev geoip-dev libedit-dev bash alpine-sdk findutils \u0026\u0026 su nobody -s /bin/sh -c " export HOME=${tempDir} \u0026\u0026 cd ${tempDir} \u0026\u0026 curl -f -O https://hg.nginx.org/pkg-oss/archive/${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 PKGOSSCHECKSUM=\\"8f3f6c1ddd984c0c7320d3bea25eee42749db6d69c251223cf91d69b8d80b703ab39eb94fcf731399a7693ebd8dd37d1b3232ea1184ca98e5ca0ba6165e1a05c *${NGINX_VERSION}-${PKG_RELEASE}.tar.gz\\" \u0026\u0026 if [ \\"\\$(openssl sha512 -r ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz)\\" = \\"\\$PKGOSSCHECKSUM\\" ]; then echo \\"pkg-oss tarball checksum verification succeeded!\\"; else echo \\"pkg-oss tarball checksum verification failed!\\"; exit 1; fi \u0026\u0026 tar xzvf ${NGINX_VERSION}-${PKG_RELEASE}.tar.gz \u0026\u0026 cd pkg-oss-${NGINX_VERSION}-${PKG_RELEASE} \u0026\u0026 cd alpine \u0026\u0026 make module-geoip module-image-filter module-njs module-xslt \u0026\u0026 apk index -o ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz ${tempDir}/packages/alpine/${apkArch}/*.apk \u0026\u0026 abuild-sign -k ${tempDir}/.abuild/abuild-key.rsa ${tempDir}/packages/alpine/${apkArch}/APKINDEX.tar.gz " \u0026\u0026 cp ${tempDir}/.abuild/abuild-key.rsa.pub /etc/apk/keys/ \u0026\u0026 apk del .build-deps \u0026\u0026 apk add -X ${tempDir}/packages/alpine/ --no-cache $nginxPackages ;; esac \u0026\u0026 apk del .checksum-deps \u0026\u0026 if [ -n "$tempDir" ]; then rm -rf "$tempDir"; fi \u0026\u0026 if [ -n "/etc/apk/keys/abuild-key.rsa.pub" ]; then rm -f /etc/apk/keys/abuild-key.rsa.pub; fi \u0026\u0026 if [ -n "/etc/apk/keys/nginx_signing.rsa.pub" ]; then rm -f /etc/apk/keys/nginx_signing.rsa.pub; fi \u0026\u0026 apk add --no-cache curl ca-certificates',
},
{
'created': '2023-05-16T17:53:59.777374567Z',
'created_by': 'LABEL maintainer=Jones MAGLOIRE @Joxit',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.777374567Z',
'created_by': 'WORKDIR /usr/share/nginx/html/',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.777374567Z',
'created_by': 'ENV NGINX_PROXY_HEADER_Host=$http_host',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.777374567Z',
'created_by': 'ENV NGINX_LISTEN_PORT=80',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.777374567Z',
'created_by': 'ENV SHOW_CATALOG_NB_TAGS=false',
'comment': 'buildkit.dockerfile.v0',
'empty_layer': true,
},
{
'created': '2023-05-16T17:53:59.792463797Z',
'created_by': 'COPY nginx/default.conf /etc/nginx/conf.d/default.conf # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.806725927Z',
'created_by': 'COPY bin/90-docker-registry-ui.sh /docker-entrypoint.d/90-docker-registry-ui.sh # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.82462658Z',
'created_by': 'COPY dist/ /usr/share/nginx/html/ # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:53:59.839284221Z',
'created_by': 'COPY favicon.ico /usr/share/nginx/html/ # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
{
'created': '2023-05-16T17:54:00.037166004Z',
'created_by':
'RUN /bin/sh -c chown -R nginx:nginx /etc/nginx/ /usr/share/nginx/html/ /var/cache/nginx # buildkit',
'comment': 'buildkit.dockerfile.v0',
},
],
'moby.buildkit.buildinfo.v1':
'eyJmcm9udGVuZCI6ImRvY2tlcmZpbGUudjAiLCJzb3VyY2VzIjpbeyJ0eXBlIjoiZG9ja2VyLWltYWdlIiwicmVmIjoiZG9ja2VyLmlvL2xpYnJhcnkvbmdpbng6YWxwaW5lIiwicGluIjoic2hhMjU2OjAyZmZkNDM5YjcxZDllYTk0MDhlNDQ5YjU2OGY2NWMwYmJiYjk0YmViZDg3NTBmMWQ4MDIzMWFiNjQ5NjAwOGUifV19',
'os': 'linux',
'rootfs': {
'type': 'layers',
'diff_ids': [
'sha256:26cbea5cba74143fbe6f584f5fc5321543155aedc4a434fcaa63b643877b5a74',
'sha256:09353074bdde293a418c894712bba3f4fca2c42cef5c2061caf611794c56ce3c',
'sha256:2749f4c7cb991ec74071f7ccec1b7907b85956709d8fccebbe77d44f01809aa9',
'sha256:7e1b91127bea03c6bcbec75fc482f62e5e025b9b4e08f46fe11a6a8d9375d0f2',
'sha256:3638581487963b65388fc14d1f14a1b0be2e82a48249da474047ea2e4601dc8c',
'sha256:fbebe8ba7beddf179286606d8a627f5dd553d78645b71f2703ab114802f0bcd5',
'sha256:363722710bd8c3005b16061d18059259edf0108644e6ab74c36c9a040a824d10',
'sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef',
'sha256:2cf5b89f94fd4a7ce1bc7eaad8d4fb9ae56e83b57b94537fd96682eda514dfc9',
'sha256:417b58457dd524a2ab48d3b4d124910aaff0680035f71816ee6efb5fb08c784a',
'sha256:b9b82eb1d5ef5a2a6ab324c70d655e27f8109959e6dcd43cf811a451c9153b3e',
'sha256:cab4286916ebabccd5ac123b0ee58ee2eaf190bc0bbe0339f106244eb75c0355',
'sha256:e7dc8b731ca3be139b27a043e9d21f711c5505ecfe9f9f0bfc4ed794d88e67e4',
],
},
};
export const ociImageIndexManifest = {
'application/vnd.oci.image.index.v1+json': imageIndex,
imageIndex,
'sha256:868d96eea2ab3b0905caa746339541cef30ed4e0864da7f89e423cb50aee7857': manifestAmd64,
manifestAmd64,
'sha256:ee45307ae7404ccfbe4536677095b1ad1258a261c79ecdf5640d24bec66e1257': manifestArm,
manifestArm,
'sha256:7209907f3aa39f8b259069272274f185c4e9772ea7159722728b5f648c71eaad': blobAmd64,
blobAmd64,
'sha256:6d0a94a37f413ae834a226070fb042386303fd80ac79c6d4a12e986a03416710': blobArm,
blobArm,
};