From b5f232dec388f9d52f49b826374a7119ac39cf87 Mon Sep 17 00:00:00 2001 From: Peter Kuczera Date: Tue, 2 Jul 2024 11:31:25 -0400 Subject: [PATCH] feat: build Docker image containing seed data (#81) --- .github/workflows/build-seed-data.yaml | 31 ++++++++++++++++++++++++++ README.md | 3 ++- docker-compose.data.yml | 10 +++++++++ docker-compose.yml | 9 -------- resources/Dockerfile | 6 +++++ 5 files changed, 49 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/build-seed-data.yaml create mode 100644 resources/Dockerfile diff --git a/.github/workflows/build-seed-data.yaml b/.github/workflows/build-seed-data.yaml new file mode 100644 index 00000000..1945ad87 --- /dev/null +++ b/.github/workflows/build-seed-data.yaml @@ -0,0 +1,31 @@ +on: + push: + branches: + - main + tags: + - "[0-9]+.[0-9]+.[0-9]+" + paths: + - .github/workflows/build-seed-data.yaml + - "resources/Dockerfile" + - "resources/seed/**" + +env: + docker_image_tag: ${{ github.ref == 'refs/heads/main' && github.sha || github.ref_name }} + +jobs: + build: + runs-on: ubuntu-latest + + permissions: + contents: read + id-token: write + + steps: + - uses: actions/checkout@v3 + - uses: integration-os/google-artifact-registry-action@v2 + with: + image: "us-docker.pkg.dev/integrationos/docker-oss/seed-data:${{ env.docker_image_tag }}" + service_account: github-actions@integrationos.iam.gserviceaccount.com + workload_identity_provider: projects/356173785332/locations/global/workloadIdentityPools/github-actions/providers/github-actions + context: resources + file: resources/Dockerfile diff --git a/README.md b/README.md index c49fd378..2f260a06 100644 --- a/README.md +++ b/README.md @@ -148,12 +148,13 @@ View the full guide [here](https://docs.integrationos.com/docs/quickstart). ```shell docker-compose up -d ``` -3. Run migrations +3. Run migrations and load seed data ```shell source .env docker-compose -f docker-compose.data.yml run --rm migrate-before docker-compose -f docker-compose.data.yml run --rm migrate-after + docker-compose -f docker-compose.data.yml run --rm seed-data ``` **Note:** If you want to run the latest version of the docker image, you can use the latest git commit hash as the tag. For example, `integrationos/integrationos:`. diff --git a/docker-compose.data.yml b/docker-compose.data.yml index 3b3e79b0..6d6f44a3 100644 --- a/docker-compose.data.yml +++ b/docker-compose.data.yml @@ -16,3 +16,13 @@ services: environment: - MONGO_URI=mongodb://integrationos:${MONGO_PASSWORD}@mongo:27017/events-service?authSource=admin - MONGO_DB_NAME=events-service + + seed-data: + platform: linux/amd64 + image: us-docker.pkg.dev/integrationos/docker-oss/seed-data:1.11.0 + restart: "no" + environment: + - MONGO_HOST=mongo + - MONGO_DATABASE=events-service + - MONGO_USERNAME=integrationos + - MONGO_PASSWORD=${MONGO_PASSWORD} diff --git a/docker-compose.yml b/docker-compose.yml index 558714ac..575bf7f1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -140,14 +140,5 @@ services: - MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD} - MONGO_INITDB_ROOT_USERNAME=integrationos - setup: - image: mongo:6.0 - depends_on: - - mongo - restart: "no" - volumes: - - ./resources:/resources:ro - entrypoint: ["/bin/bash", "-c", "sleep 10 && mongorestore --host mongo --nsFrom='seed.*' --nsTo='events-service.*' --authenticationDatabase admin -u integrationos -p ${MONGO_PASSWORD} /resources"] - redis: image: redis:7.0 diff --git a/resources/Dockerfile b/resources/Dockerfile new file mode 100644 index 00000000..277fb96c --- /dev/null +++ b/resources/Dockerfile @@ -0,0 +1,6 @@ +FROM mongo:6.0 + +COPY seed /app/integrationos/resources/seed +WORKDIR /app/integrationos/ + +ENTRYPOINT ["/bin/bash", "-c", "set -u && mongorestore --host ${MONGO_HOST} --nsFrom=seed.* --nsTo=${MONGO_DATABASE}.* --authenticationDatabase admin -u ${MONGO_USERNAME} -p ${MONGO_PASSWORD} ./resources"]