Skip to content

Commit f296c22

Browse files
committed
chore(pack-images): change image to drycc base
1 parent 0c5d9fa commit f296c22

40 files changed

Lines changed: 592 additions & 748 deletions

Dockerfile.build

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,19 @@
11
ARG BASE_IMAGE
22
FROM ${BASE_IMAGE}
33

4-
ARG pack_uid=1000
5-
ARG pack_gid=1000
6-
4+
USER root
5+
RUN cp -rf /var/lib/dpkg /var/lib/dpkg-run; \
6+
\
7+
\
8+
install-packages zlib1g git autoconf pkg-config build-essential; \
9+
install-stack jq 1.6; \
10+
install-stack yj 5.0.0; \
11+
cp -rf /opt/drycc/*/bin/* /usr/local/bin; \
12+
rm -rf /opt/drycc/*; \
13+
\
14+
\
15+
rm -rf /var/lib/dpkg; \
16+
mv /var/lib/dpkg-run /var/lib/dpkg;
717
ADD rootfs /
818

9-
RUN groupadd drycc --gid ${pack_gid} \
10-
&& useradd drycc -u ${pack_uid} -g ${pack_gid} -s /bin/bash -m \
11-
&& chown -R drycc:drycc /usr/sbin/nginx /var/log/nginx \
12-
&& mkdir /app \
13-
&& chown drycc:drycc /app \
14-
&& chmod +x /usr/local/bin/*
15-
16-
ENV CNB_USER_ID=${pack_uid}
17-
ENV CNB_GROUP_ID=${pack_gid}
18-
19-
ARG STACK
20-
ENV STACK "${STACK}"
21-
ENV CNB_STACK_ID "${STACK}"
22-
LABEL io.buildpacks.stack.id="${STACK}"
23-
24-
USER drycc
19+
USER drycc

Dockerfile.run

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
11
ARG BASE_IMAGE
22
FROM ${BASE_IMAGE}
33

4-
ARG pack_uid=1000
5-
ARG pack_gid=1000
4+
ARG STACK_ID
65

7-
RUN ln -s /workspace /app \
8-
&& groupadd drycc --gid ${pack_gid} \
9-
&& useradd drycc -u ${pack_uid} -g ${pack_gid} -s /bin/bash -m \
10-
&& chown -R drycc:drycc /usr/sbin/nginx /var/log/nginx
6+
ARG PACK_UID=1000
7+
ARG PACK_GID=1000
8+
ARG CNB_APP_DIR=/workspace
9+
10+
RUN groupadd drycc --gid ${PACK_GID}; \
11+
useradd drycc -u ${PACK_UID} -g ${PACK_GID} -s /bin/bash -m -d ${CNB_APP_DIR}; \
12+
chown drycc:drycc /opt;
1113

12-
ARG STACK
13-
LABEL io.buildpacks.stack.id="${STACK}"
1414
USER drycc
15-
ENV HOME /app
15+
16+
ENV CNB_USER_ID ${PACK_UID}
17+
ENV CNB_GROUP_ID ${PACK_GID}
18+
ENV CNB_STACK_ID ${STACK_ID}
19+
ENV CNB_APP_DIR ${CNB_APP_DIR}
20+
ENV HOME ${CNB_APP_DIR}
21+
22+
LABEL io.buildpacks.stack.id="${STACK_ID}"
23+
24+

Makefile

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,45 @@
11
# If DRYCC_REGISTRY is not set, try to populate it from legacy DEV_REGISTRY
2-
STACK ?= 20
3-
VERSION ?= ${STACK}
2+
CODENAME ?= bullseye
43
DEV_REGISTRY ?= docker.io
54
DRYCC_REGISTRY ?= ${DEV_REGISTRY}
6-
5+
PLATFORM ?= $(shell python3 _scripts/utils.py platform)
76
ARCH ?= $(shell python3 _scripts/utils.py arch)
8-
LIFECYCLE_VERSION ?= v0.12.0-rc.1
7+
LIFECYCLE_VERSION ?= v0.13.3
98
ifeq ($(ARCH),amd64)
109
LIFECYCLE_URL = https://github.com/buildpacks/lifecycle/releases/download/$(LIFECYCLE_VERSION)/lifecycle-${LIFECYCLE_VERSION}+linux.x86-64.tgz
1110
else
1211
LIFECYCLE_URL = https://github.com/buildpacks/lifecycle/releases/download/$(LIFECYCLE_VERSION)/lifecycle-${LIFECYCLE_VERSION}+linux.${ARCH}.tgz
1312
endif
14-
STACK_RUN_IMAGE = docker.io/drycc/pack:20-linux-${ARCH}
15-
STACK_BUILD_IMAGE = docker.io/drycc/pack:20-linux-${ARCH}-build
13+
STACK_ID = drycc-${CODENAME}
14+
STACK_RUN_IMAGE = ${DRYCC_REGISTRY}/drycc/pack:${CODENAME}-${PLATFORM}-${ARCH}
15+
STACK_BUILD_IMAGE = ${DRYCC_REGISTRY}/drycc/pack:${CODENAME}-${PLATFORM}-${ARCH}-build
16+
BUILDPACKS_IMAGE = ${DRYCC_REGISTRY}/drycc/buildpacks:${CODENAME}-${PLATFORM}-${ARCH}
1617

1718
SHELLCHECK_PREFIX := docker run --rm -v ${CURDIR}:/workdir -w /workdir ${DRYCC_REGISTRY}/drycc/go-dev shellcheck
1819
SHELL_SCRIPTS = $(shell find "buildpacks" -name '*.sh') $(shell find "rootfs" -name '*.sh') $(wildcard buildpacks/*/bin/*)
1920

2021
SHELL=/bin/bash -o pipefail
2122

2223
pack:
23-
@docker build --pull -f Dockerfile.build \
24-
--build-arg STACK=drycc-${STACK} \
25-
--build-arg BASE_IMAGE=${DRYCC_REGISTRY}/drycc/stack-images:${STACK} \
26-
-t ${DRYCC_REGISTRY}/drycc/pack:${VERSION}-build .
2724
@docker build --pull -f Dockerfile.run \
28-
--build-arg STACK=drycc-${STACK} \
29-
--build-arg BASE_IMAGE=${DRYCC_REGISTRY}/drycc/stack-images:${STACK} \
30-
-t ${DRYCC_REGISTRY}/drycc/pack:${VERSION} .
25+
--build-arg STACK_ID=${STACK_ID} \
26+
--build-arg BASE_IMAGE=${DRYCC_REGISTRY}/drycc/base:${CODENAME} \
27+
-t ${STACK_RUN_IMAGE} .
28+
@docker build -f Dockerfile.build \
29+
--build-arg BASE_IMAGE=${STACK_RUN_IMAGE} \
30+
-t ${STACK_BUILD_IMAGE} .
3131

3232
publish-pack: pack
33-
@docker push ${DRYCC_REGISTRY}/drycc/pack:${VERSION}-build
34-
@docker push ${DRYCC_REGISTRY}/drycc/pack:${VERSION}
33+
@docker push ${STACK_RUN_IMAGE}
34+
@docker push ${STACK_BUILD_IMAGE}
3535

3636
buildpack:
37-
LIFECYCLE_URL=${LIFECYCLE_URL} STACK_RUN_IMAGE=${STACK_RUN_IMAGE} STACK_BUILD_IMAGE=${STACK_BUILD_IMAGE} python3 _scripts/utils.py toml builder.toml builder.toml.${ARCH}
38-
@pack builder create ${DRYCC_REGISTRY}/drycc/buildpacks:${VERSION} --config builder.toml.${ARCH} --pull-policy if-not-present
39-
@rm -rf builder.toml.${ARCH}
37+
STACK_ID=${STACK_ID} LIFECYCLE_URL=${LIFECYCLE_URL} STACK_RUN_IMAGE=${STACK_RUN_IMAGE} STACK_BUILD_IMAGE=${STACK_BUILD_IMAGE} python3 _scripts/utils.py toml builder.toml builder.toml.${PLATFORM}.${ARCH}
38+
@pack builder create ${BUILDPACKS_IMAGE} --config builder.toml.${PLATFORM}.${ARCH} --pull-policy if-not-present
39+
@rm -rf builder.toml.${PLATFORM}.${ARCH}
4040

4141
publish-buildpack: buildpack
42-
@docker push ${DRYCC_REGISTRY}/drycc/buildpacks:${VERSION}
42+
@docker push ${BUILDPACKS_IMAGE}
4343

4444
publish: publish-pack publish-buildpack
4545

_scripts/utils.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
22
import sys
3-
import platform
3+
import platform as _platform
44

55
def toml():
66
result = None
@@ -10,6 +10,9 @@ def toml():
1010
with open(sys.argv[3], "w") as f:
1111
f.write(result)
1212

13+
def platform():
14+
print(sys.platform)
15+
1316
def arch():
1417
print({
1518
"armv5": "armv5",
@@ -19,7 +22,7 @@ def arch():
1922
"x86_64": "amd64",
2023
"i686": "386",
2124
"i386": "386",
22-
}.get(platform.machine()))
25+
}.get(_platform.machine()))
2326

2427
if __name__ == "__main__":
2528
eval("%s()" % sys.argv[1])

builder.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
description = "Base builder for 20 stack, based on ubuntu:20.04 base image"
1+
description = "Base builder for drycc stack, based on debian base image"
22

33
[lifecycle]
44
uri = "{LIFECYCLE_URL}"
@@ -35,13 +35,13 @@ version = "0.0.1"
3535

3636

3737
[[buildpacks]]
38-
id = "drycc/nodejs"
38+
id = "drycc/node"
3939
version = "0.0.1"
40-
uri = "./buildpacks/nodejs"
40+
uri = "./buildpacks/node"
4141

4242
[[order]]
4343
[[order.group]]
44-
id = "drycc/nodejs"
44+
id = "drycc/node"
4545
version = "0.0.1"
4646

4747

@@ -76,6 +76,6 @@ id = "drycc/php"
7676
version = "0.0.1"
7777

7878
[stack]
79-
id = "drycc-20"
79+
id = "{STACK_ID}"
8080
run-image = "{STACK_RUN_IMAGE}"
8181
build-image = "{STACK_BUILD_IMAGE}"

buildpacks/go/bin/build

Lines changed: 16 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
#!/usr/bin/env bash
2-
# shellcheck source=/dev/null
3-
. generate-layer.sh
42
set -eo pipefail
53

64
echo "---> Go Buildpack"
@@ -9,34 +7,18 @@ echo "---> Go Buildpack"
97
layers_dir=$1
108
plan_path=$3
119

12-
# 2. DOWNLOAD go
13-
go_layer_dir="${layers_dir}/go"
14-
mkdir -p "${go_layer_dir}"
15-
arch=$(dpkg --print-architecture) # amd64 arm64
16-
# determine go version provided during detection
17-
go_version=$(yj <"${plan_path}" -t | jq -r '.entries[] | select(.name == "go") | .version')
18-
remote_go_version='not found'
19-
if [[ -f "${go_layer_dir}.toml" ]]; then
20-
remote_go_version=$(yj <"${go_layer_dir}.toml" -t | jq -r .metadata 2>/dev/null || echo 'not found')
21-
fi
22-
if [[ "${go_version}" == "${remote_go_version}" ]]; then
23-
echo "---> Reusing go"
24-
else
25-
echo "---> Downloading and extracting go ${go_version}"
26-
go_url=https://golang.org/dl/go${go_version}.linux-${arch}.tar.gz
27-
wget -q -O - "${go_url}" | tar -xzf - -C "${go_layer_dir}"
28-
cat >"${go_layer_dir}.toml" <<EOL
29-
cache = true
30-
build = true
31-
launch = true
32-
metadata = "${go_version}"
33-
EOL
34-
fi
10+
rm -rf /opt/drycc; ln -s "${layers_dir}" /opt/drycc
11+
# shellcheck source=/dev/null
12+
. generate-layers.sh "${layers_dir}"
13+
generate_deps_layer build-deps
14+
generate_deps_layer run-deps
3515

16+
# 2. DOWNLOAD go
17+
generate_stack_layer go "${plan_path}" false
3618
go_cache_layer_dir="${layers_dir}/go_cache"
37-
# 3. MAKE go AVAILABLE TO THIS SCRIPT
38-
export PATH="${go_layer_dir}/go/bin:${PATH}"
39-
export GOPATH="${go_cache_layer_dir}"
19+
20+
# shellcheck source=/dev/null
21+
. init-stack
4022

4123
# Compares previous go.mod checksum to the current go.mod
4224
local_mod_checksum=$(sha256sum go.mod | cut -d ' ' -f 1 || echo 'not found')
@@ -53,13 +35,16 @@ else
5335
rm "${go_cache_layer_dir}/pkg" -rf
5436
go mod download
5537
cat >"${go_cache_layer_dir}.toml" <<EOL
38+
[types]
5639
cache = true
5740
build = true
58-
launch = true
59-
metadata = "${local_mod_checksum}"
41+
launch = false
42+
43+
[metadata]
44+
version = "${local_mod_checksum}"
6045
EOL
6146
fi
6247

6348
go mod vendor
6449
go build -o main -v .
65-
generate-launch.sh "${layers_dir}"
50+
generate-launch.sh "${layers_dir}"

buildpacks/go/bin/detect

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,26 @@
22
set -eo pipefail
33

44
# 1. CHECK IF APPLICABLE
5-
if [ ! -f "go.mod" ] && [ ! -f "setup.py" ]; then
5+
if [ ! -f "go.mod" ]; then
66
exit 100
77
fi
88

99
# 2. GET ARGS
1010
plan_path=$2
1111

1212
# 3. GET CONFIGURATION
13-
version=1.16
13+
version=1.17
1414
if [[ -f go.mod ]]; then
1515
version=$(grep <go.mod 'go [1.*]' | tr -d 'go ')
1616
fi
1717

1818
# 4. DECLARE DEPENDENCIES
1919
cat >>"${plan_path}" <<EOL
20-
# Buildpack provides this dependency
21-
#
22-
# NOTE: The dependency is provided during the 'build' process.
23-
#
2420
[[provides]]
2521
name = "go"
2622
27-
# Buildpack requires this dependency
28-
#
29-
# NOTE: Everything aside from 'name' is simply additional information that the providing buildpack can use to resolve
30-
# the dependency.
31-
#
3223
[[requires]]
3324
name = "go"
25+
[requires.metadata]
3426
version = "${version}"
3527
EOL

buildpacks/go/buildpack.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Buildpack API version
2-
api = "0.2"
2+
api = "0.7"
33

44
# Buildpack ID and metadata
55
[buildpack]
@@ -10,4 +10,4 @@ homepage = "https://github.com/drycc/pack-images/tree/main/buildpacks/go"
1010

1111
# Stacks that the buildpack will work with
1212
[[stacks]]
13-
id = "drycc-20"
13+
id = "drycc-bullseye"

0 commit comments

Comments
 (0)