mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-16 01:44:03 +03:00
56 lines
1.8 KiB
ReStructuredText
56 lines
1.8 KiB
ReStructuredText
Auto-apply migrations/metadata when server starts
|
|
=================================================
|
|
|
|
.. contents:: Table of contents
|
|
:backlinks: none
|
|
:depth: 1
|
|
:local:
|
|
|
|
Hasura ships a special docker container which can be used to
|
|
automatically apply migrations/metadata when the server starts:
|
|
|
|
.. code-block:: bash
|
|
|
|
hasura/graphql-engine:<version>.cli-migrations
|
|
|
|
.. note::
|
|
|
|
This container image includes Hasura CLI at ``/bin/hasura-cli`` and can be
|
|
used for running any other CI/CD scripts in your workflow.
|
|
|
|
Applying migrations
|
|
-------------------
|
|
|
|
The ``migrations`` directory created by Hasura CLI (the one next to
|
|
``config.yaml``) can be mounted at ``/hasura-migrations`` path of this docker
|
|
container and the container's entry point script will apply the migrations before
|
|
starting the server. If no directory is mounted at the designated path, server
|
|
will start ignoring migrations.
|
|
|
|
If you want to mount the migrations directory at some location other than
|
|
``/hasura-migrations``, set the following environment variable:
|
|
|
|
.. code-block:: bash
|
|
|
|
HASURA_GRAPHQL_MIGRATIONS_DIR=/custom-path-for-migrations
|
|
|
|
Once the migrations are applied, the container resumes operation as a normal
|
|
Hasura GraphQL Engine server.
|
|
|
|
Example:
|
|
|
|
.. code-block:: bash
|
|
|
|
# Start Hasura after applying the migrations present in /home/me/my-project/migrations
|
|
docker run -p 8080:8080 \
|
|
-v /home/me/my-project/migrations:/hasura-migrations \
|
|
-e HASURA_GRAPHQL_DATABASE_URL=postgres://postgres:@postgres:5432/postgres \
|
|
hasura/graphql-engine:v1.0.0-alpha27.cli-migrations
|
|
|
|
|
|
Applying only metadata
|
|
----------------------
|
|
|
|
If you're managing migrations with a different tool and want to use this image to apply only the
|
|
metadata, mount a directory with just a ``metadata.yaml`` file and the script will
|
|
apply the metadata. |