diff --git a/.dockerignore b/.dockerignore index 3559649..29898a3 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,4 +1,5 @@ -.idea -node_modules -docker-compose.* +**/.idea +**/node_modules +**/docker-compose.* .dockerignore +.claude diff --git a/.env.docker.example b/.env.docker.example index e7ad3b2..6b3846e 100644 --- a/.env.docker.example +++ b/.env.docker.example @@ -6,3 +6,7 @@ CLIENT_PORT=4400 AUTH_PROVIDER_PORT=4500 WATCH="false" + +# for development +# MB_RUN_MODE="dev" +# METASTORE_DEV_SERVER_URL="" diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index a39bbf4..daf450a 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -17,7 +17,9 @@ jobs: timeout-minutes: 10 name: e2e-tests env: - PREMIUM_EMBEDDING_TOKEN: ${{ secrets.ENTERPRISE_TOKEN }} + PREMIUM_EMBEDDING_TOKEN: ${{ secrets.STAGING_MB_ALL_FEATURES_TOKEN }} + MB_RUN_MODE: dev + METASTORE_DEV_SERVER_URL: ${{ secrets.METASTORE_DEV_SERVER_URL }} permissions: id-token: write contents: read @@ -28,8 +30,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:e2e:up -- --wait - name: Install Chrome v111 uses: browser-actions/setup-chrome@v1 @@ -52,4 +53,4 @@ jobs: name: cypress-recording-latest path: | ./e2e/cypress - if-no-files-found: ignore \ No newline at end of file + if-no-files-found: ignore diff --git a/.gitignore b/.gitignore index b47a348..15bdcdc 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,7 @@ build # debug *.log npm-debug.log* + + +# agents +.claude 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/docker-compose.yml b/docker-compose.yml index 035f7f7..23274c2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,16 +1,16 @@ 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}/" MB_JWT_SHARED_SECRET: "${METABASE_JWT_SHARED_SECRET}" MB_SETUP_TOKEN: "${PREMIUM_EMBEDDING_TOKEN}" MB_PREMIUM_EMBEDDING_TOKEN: "${PREMIUM_EMBEDDING_TOKEN}" + MB_RUN_MODE: "${MB_RUN_MODE}" + METASTORE_DEV_SERVER_URL: "${METASTORE_DEV_SERVER_URL}" MB_JWT_IDENTITY_PROVIDER_URI: "http://localhost:${AUTH_PROVIDER_PORT}/sso/metabase" healthcheck: test: curl --fail -X GET -I "http://localhost:${MB_PORT}/api/health" || exit 1 @@ -19,6 +19,8 @@ services: retries: 10 ports: - "${MB_PORT}:${MB_PORT}" + volumes: + - ./metabase/config.yml:/app/config.yml client: depends_on: @@ -35,6 +37,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: 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..ad0dbec 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,11 @@ "private": true, "version": "0.0.0", "scripts": { - "start": "npm run docker:up", + "start": "npm run docker:up -- --build", "docker:up": "docker compose --env-file .env.docker up", - "docker:down": "docker compose --env-file .env.docker down --rmi all --volumes" + "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" } }