Skip to content

Commit 3fd5834

Browse files
committed
Add NodeJS back as a separated image for correct cache.
1 parent 73b9fe3 commit 3fd5834

File tree

14 files changed

+196
-53
lines changed

14 files changed

+196
-53
lines changed

docker-compose.cache.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@
2020
version: "3.7"
2121

2222
services:
23+
deps_node:
24+
image: metacall/core:deps_node
25+
build:
26+
cache_from:
27+
- ${IMAGE_REGISTRY}/metacall/core:deps_node
2328
deps:
2429
image: metacall/core:deps
2530
build:

docker-compose.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ sub_pull() {
2626
exit 1
2727
fi
2828

29+
docker pull $IMAGE_NAME:deps_node || true
30+
2931
docker pull $IMAGE_NAME:deps || true
3032

3133
docker pull $IMAGE_NAME:dev || true
@@ -35,6 +37,9 @@ sub_pull() {
3537

3638
# Build MetaCall Docker Compose (link manually dockerignore files)
3739
sub_build() {
40+
ln -sf tools/node/.dockerignore .dockerignore
41+
docker-compose -f docker-compose.yml build --force-rm deps_node
42+
3843
ln -sf tools/base/.dockerignore .dockerignore
3944
docker-compose -f docker-compose.yml build --force-rm deps
4045

@@ -52,6 +57,9 @@ sub_build_cache() {
5257
exit 1
5358
fi
5459

60+
ln -sf tools/node/.dockerignore .dockerignore
61+
docker-compose -f docker-compose.yml -f docker-compose.cache.yml build deps_node
62+
5563
ln -sf tools/base/.dockerignore .dockerignore
5664
docker-compose -f docker-compose.yml -f docker-compose.cache.yml build deps
5765

@@ -69,6 +77,10 @@ sub_push(){
6977
exit 1
7078
fi
7179

80+
# Push deps_node image
81+
docker tag metacall/core:deps_node $IMAGE_NAME:deps_node
82+
docker push $IMAGE_NAME:deps_node
83+
7284
# Push deps image
7385
docker tag metacall/core:deps $IMAGE_NAME:deps
7486
docker push $IMAGE_NAME:deps

docker-compose.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,19 @@
2020
version: "3.7"
2121

2222
services:
23+
deps_node:
24+
image: metacall/core:deps_node
25+
container_name: metacall_core_deps_node
26+
build:
27+
context: .
28+
dockerfile: tools/node/Dockerfile
29+
args:
30+
METACALL_BASE_IMAGE: $METACALL_BASE_IMAGE
31+
METACALL_PATH: $METACALL_PATH
32+
METACALL_NODE_BUILD_TYPE: $METACALL_NODE_BUILD_TYPE
33+
environment:
34+
DEBIAN_FRONTEND: noninteractive
35+
2336
deps:
2437
image: metacall/core:deps
2538
container_name: metacall_core_deps
@@ -29,13 +42,14 @@ services:
2942
args:
3043
METACALL_BASE_IMAGE: $METACALL_BASE_IMAGE
3144
METACALL_PATH: $METACALL_PATH
32-
METACALL_NODE_BUILD_TYPE: $METACALL_NODE_BUILD_TYPE
3345
METACALL_TOOLS_PATH: $METACALL_PATH/tools
3446
METACALL_INSTALL_OPTIONS: root base python ruby netcore v8rep51 nodejs rapidjson funchook pack
3547
environment:
3648
DEBIAN_FRONTEND: noninteractive
3749
LTTNG_UST_REGISTER_TIMEOUT: 0
3850
NUGET_XMLDOC_MODE: skip
51+
depends_on:
52+
- deps_node
3953

4054
dev:
4155
image: metacall/core:dev

hooks/build

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
# limitations under the License.
2020
#
2121

22+
# Run docker deps_node image builder
23+
bash -c "cd tools/node && ./hooks/build"
24+
2225
# Run docker deps image builder
2326
bash -c "cd tools/base && ./hooks/build"
2427

hooks/env

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
source ../../.env
2424

2525
# These values are passed by the Hub, but if we are running locally we can get them
26-
[ -n "$SOURCE_TYPE" ] || SOURCE_TYPE=git
27-
[ -n "$SOURCE_BRANCH" ] || SOURCE_BRANCH=$(git symbolic-ref -q --short HEAD)
28-
[ -n "$GIT_SHA1" ] || GIT_SHA1=$(git rev-parse -q HEAD)
26+
[ -n "$SOURCE_TYPE" ] || SOURCE_TYPE=git
27+
[ -n "$SOURCE_BRANCH" ] || SOURCE_BRANCH=$(git symbolic-ref -q --short HEAD)
28+
[ -n "$GIT_SHA1" ] || GIT_SHA1=$(git rev-parse -q HEAD)
2929

3030
if [[ "${SOURCE_BRANCH/-*/}" =~ ^[0-9][0-9.]*$ ]]; then
3131
VERSION=${SOURCE_BRANCH/-*/}

hooks/pre_build

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,14 @@
1919
# limitations under the License.
2020
#
2121

22-
# Pull docker core_deps image
23-
docker pull registry.hub.docker.com/metacall/core:deps || true
22+
# Pull docker deps_node image
23+
docker pull registry.hub.docker.com/metacall/core:deps_node || true
2424

25-
# Pull docker core_dev image
26-
docker pull registry.hub.docker.com/metacall/core:dev || true
25+
# Pull docker deps image
26+
docker pull registry.hub.docker.com/metacall/core:deps || true
2727

28-
# Run docker core image builder
29-
docker pull registry.hub.docker.com/metacall/core:runtime || true
28+
# Pull docker dev image
29+
docker pull registry.hub.docker.com/metacall/core:dev || true
30+
31+
# Run docker runtime image builder
32+
docker pull registry.hub.docker.com/metacall/core:runtime || true

hooks/push

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@
2121

2222
# Show message
2323
echo "[***] Push hook running"
24-
echo "[***] - Tagging and pushing $DOCKER_REPO:{deps, dev, latest}"
24+
echo "[***] - Tagging and pushing $DOCKER_REPO:{deps_node, deps, dev, latest}"
25+
26+
# Tag the deps_node image and push it
27+
docker tag metacall/core:deps_node $DOCKER_REPO:deps_node
28+
docker push $DOCKER_REPO:deps_node
2529

2630
# Tag the deps image and push it
2731
docker tag metacall/core:deps $DOCKER_REPO:deps

tools/base/.dockerignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
**
22
!tools/metacall-environment.sh
33
!tools/nobuildtest.patch
4-
!tools/metacall-clear.sh
5-
!cmake/FindNodeJS.cmake

tools/base/Dockerfile

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -21,44 +21,7 @@
2121
ARG METACALL_BASE_IMAGE
2222

2323
# MetaCall Depends node image
24-
FROM ${METACALL_BASE_IMAGE} AS deps_node
25-
26-
# Image descriptor
27-
LABEL copyright.name="Vicente Eduardo Ferrer Garcia" \
28-
copyright.address="[email protected]" \
29-
maintainer.name="Vicente Eduardo Ferrer Garcia" \
30-
maintainer.address="[email protected]" \
31-
vendor="MetaCall Inc." \
32-
version="0.1"
33-
34-
# Arguments
35-
ARG METACALL_PATH
36-
37-
# Environment variables
38-
ENV DEBIAN_FRONTEND=noninteractive
39-
40-
# Define working directory
41-
WORKDIR $METACALL_PATH
42-
43-
# Copy MetaCall environment script
44-
COPY tools/metacall-environment.sh tools/metacall-clear.sh $METACALL_PATH/tools/
45-
46-
# Install build dependencies
47-
RUN tools/metacall-environment.sh root base nodejs
48-
49-
# Copy MetaCall NodeJS cmake script
50-
COPY cmake/FindNodeJS.cmake $METACALL_PATH/cmake/FindNodeJS.cmake
51-
52-
# Run NodeJS cmake script (TODO: Make find library prefixes/suffixes generic)
53-
ARG METACALL_NODE_BUILD_TYPE
54-
55-
RUN cmake \
56-
-DCMAKE_BUILD_TYPE=${METACALL_NODE_BUILD_TYPE} \
57-
-DCMAKE_FIND_LIBRARY_PREFIXES=lib \
58-
-DCMAKE_FIND_LIBRARY_SUFFIXES=".a;.so" \
59-
-P $METACALL_PATH/cmake/FindNodeJS.cmake \
60-
&& tools/metacall-clear.sh root base nodejs \
61-
&& rm -rf $METACALL_PATH
24+
FROM metacall/core_deps:node AS deps_node
6225

6326
# MetaCall Depends base image
6427
FROM ${METACALL_BASE_IMAGE} AS deps

tools/base/hooks/build

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ ln -sf "`pwd`/.dockerignore" ../../.dockerignore
3737
# --build-arg "SOURCE_TYPE=$SOURCE_TYPE" \
3838
# ${VERSION:+--build-arg "VERSION=$VERSION"} \
3939

40-
# Build base image
40+
# Build deps image
4141
docker build \
42+
--cache-from registry.hub.docker.com/metacall/core:deps_node \
4243
--cache-from registry.hub.docker.com/metacall/core:deps \
4344
--build-arg "METACALL_BASE_IMAGE=$METACALL_BASE_IMAGE" \
4445
--build-arg "METACALL_PATH=$METACALL_PATH" \
45-
--build-arg "METACALL_NODE_BUILD_TYPE=$METACALL_NODE_BUILD_TYPE" \
4646
--build-arg "METACALL_TOOLS_PATH=$METACALL_PATH/tools" \
4747
--build-arg "METACALL_INSTALL_OPTIONS=$METACALL_INSTALL_OPTIONS" \
4848
-t $IMAGE_NAME \

0 commit comments

Comments
 (0)