From 62e3875eea2695e89ad12832c01a5485962a9ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20L=C3=B3pez=20Dato?= Date: Tue, 30 Sep 2025 13:19:25 -0300 Subject: [PATCH 1/3] Docker build improvements --- .dockerignore | 6 +++--- docker-compose.yml | 8 ++++---- metabase/Dockerfile | 11 ----------- metabase/{init-config.yml => config.yml} | 0 package.json | 5 +++-- 5 files changed, 10 insertions(+), 20 deletions(-) delete mode 100644 metabase/Dockerfile rename metabase/{init-config.yml => config.yml} (100%) diff --git a/.dockerignore b/.dockerignore index 3559649..ea3a36a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,4 @@ -.idea -node_modules -docker-compose.* +**/.idea +**/node_modules +**/docker-compose.* .dockerignore diff --git a/docker-compose.yml b/docker-compose.yml index 035f7f7..3199170 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,8 @@ services: metabase: - build: - context: . - dockerfile: metabase/Dockerfile + image: metabase/metabase-enterprise:v1.55.x environment: - MB_CONFIG_FILE_PATH: "./app/init-config.yml" + MB_CONFIG_FILE_PATH: /app/config.yml MB_JETTY_PORT: "${MB_PORT}" MB_EDITION: "ee" MB_SITE_URL: "http://localhost:${MB_PORT}/" @@ -19,6 +17,8 @@ services: retries: 10 ports: - "${MB_PORT}:${MB_PORT}" + volumes: + - ./metabase/config.yml:/app/config.yml client: depends_on: diff --git a/metabase/Dockerfile b/metabase/Dockerfile deleted file mode 100644 index d2250c1..0000000 --- a/metabase/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM metabase/metabase-enterprise:v1.55.x - -COPY ./metabase /app/ -COPY ./local-dist /app/local-dist - -RUN if [ -f ./app/local-dist/metabase.jar ]; then \ - echo "Local metabase.jar is found in ./app/local-dist, running it..."; \ - cp ./app/local-dist/metabase.jar /app/metabase.jar; \ - else \ - echo "Local metabase.jar is not found in ./app/local-dist, skipping copy"; \ - fi diff --git a/metabase/init-config.yml b/metabase/config.yml similarity index 100% rename from metabase/init-config.yml rename to metabase/config.yml diff --git a/package.json b/package.json index 111e2a9..3c88462 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,9 @@ "private": true, "version": "0.0.0", "scripts": { - "start": "npm run docker:up", + "start": "npm run docker:up -- --build", + "rm": "npm run docker:down -- --volumes --rmi all --remove-orphans", "docker:up": "docker compose --env-file .env.docker up", - "docker:down": "docker compose --env-file .env.docker down --rmi all --volumes" + "docker:down": "docker compose --env-file .env.docker down" } } From 6050b14a07d348de88c084cd6b165fa6baf9a0cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20L=C3=B3pez=20Dato?= Date: Tue, 30 Sep 2025 15:03:02 -0300 Subject: [PATCH 2/3] Use Compose --wait instead of nc'ing to the client port --- .github/workflows/e2e-tests.yml | 3 +-- docker-compose.yml | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index a37992d..ce2e5de 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -28,8 +28,7 @@ jobs: - name: Run Sample App in Docker run: | cp .env.docker.example .env.docker && - npm run docker:up -- -d && - while ! nc -z localhost 4400; do sleep 1; done + npm run docker:up -- --wait - name: Install Chrome v111 uses: browser-actions/setup-chrome@v1 diff --git a/docker-compose.yml b/docker-compose.yml index 3199170..1873551 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,6 +35,11 @@ services: environment: CLIENT_PORT: "${CLIENT_PORT}" VITE_METABASE_INSTANCE_URL: "http://localhost:${MB_PORT}" + healthcheck: + test: curl --fail -X GET -I "http://localhost:${CLIENT_PORT}/" || exit 1 + interval: 2s + timeout: 2s + retries: 5 ports: - "${CLIENT_PORT}:${CLIENT_PORT}" volumes: From eaddd56a440318788fcbe703f16b360b76c31c10 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Wed, 1 Oct 2025 16:34:22 +0400 Subject: [PATCH 3/3] Adjust based on proposal --- .github/workflows/e2e-tests.yml | 2 +- docker-compose.local-dist.yml | 9 +++++++++ package.json | 6 ++++-- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 docker-compose.local-dist.yml diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index ce2e5de..ccd18d6 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -28,7 +28,7 @@ jobs: - name: Run Sample App in Docker run: | cp .env.docker.example .env.docker && - npm run docker:up -- --wait + npm run docker:e2e:up -- --wait - name: Install Chrome v111 uses: browser-actions/setup-chrome@v1 diff --git a/docker-compose.local-dist.yml b/docker-compose.local-dist.yml new file mode 100644 index 0000000..7b24a77 --- /dev/null +++ b/docker-compose.local-dist.yml @@ -0,0 +1,9 @@ +services: + metabase: + volumes: + - type: bind + source: ./local-dist/metabase.jar + target: /app/metabase.jar + read_only: true + bind: + create_host_path: false diff --git a/package.json b/package.json index 3c88462..ad0dbec 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,10 @@ "version": "0.0.0", "scripts": { "start": "npm run docker:up -- --build", - "rm": "npm run docker:down -- --volumes --rmi all --remove-orphans", "docker:up": "docker compose --env-file .env.docker up", - "docker:down": "docker compose --env-file .env.docker down" + "docker:e2e:up": "yarn docker:up", + "docker:local-dist:up": "docker compose -f docker-compose.yml -f docker-compose.local-dist.yml --env-file .env.docker up", + "docker:down": "docker compose --env-file .env.docker down", + "docker:rm": "yarn docker:down --rmi all --volumes" } }