Skip to main content

load data-container

Overview#

Loading a data container allows you to run your data container (database) with the data saved at a moment in time.

Command#

spawnctl load data-container <ContainerName_Or_ContainerID> --revision=<RevisionID>

Tutorial#

In this tutorial we will create a data image, then create a data container from that image. We will then make some changes to the data container and save those changes. After this we will load the previous revision and inspect the data container.

As a prerequisite you should've followed the instructions to install spawnctl

  1. Create a file development.yaml with your data image specifications.

    sourceType: empty
    name: dev
    engine: postgresql
    version: 11.0

    In this case we want to create a PostgreSQL data image that is completely empty and is named dev.

  2. Run the following command to create a data image.

    $ spawnctl create data-image -f ./development.yaml
    Data image 'dev' (10001) created!
  3. You can verify your data image by running the following command.

    $ spawnctl get data-images
    NAME IMAGE ID ENGINE STATUS MESSAGE CREATED
    dev 10001 PostgreSQL 2 Created 2 minutes ago
  4. Create a data container from the newly created data image.

    $ spawnctl create data-container --image dev
    Data container 'dev-rambbomj' (10001) created!
    -> Host=instances.spawn.cc;Port=53223;User ID=<some_user_id>;Password=<some_password>;
  5. You can verify your data container was properly created by running the following command.

    Notice the created data container has revision rev.0.

    $ spawnctl get data-containers
    NAME CONTAINER ID REVISION STATUS MESSAGE ENGINE CREATED
    dev-rambbomj 10001 rev.0 2 Running PostgreSQL 1 minute ago
  6. You should now be able to connect to your database and execute queries.

    In this example we connect to the PostgreSQL data container (database) using psql.

    $ psql -h instances.spawn.cc -p 53223 -U <some_user_id>
    Password for user <some_user_id>:
    psql (10.5, server 11.0 (Debian 11.0-1.pgdg90+2))
    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
    Type "help" for help.
    <some_user_id>=# CREATE TABLE customers(id INT);
    CREATE TABLE
    <some_user_id>=# \dt
    List of relations
    Schema | Name | Type | Owner
    --------+-----------+-------+------------------
    public | customers | table | <some_user_id>
    (1 row)
  7. We can now perform a save operation on this data container.

    $ spawnctl save data-container dev
    Saving container....
    Data container 'dev-rambbomj' saved!
    New revision is 'rev.1'
  8. You can now load the data container at revision rev.0.

    $ spawnctl load data-container dev-rambbomj --revision=rev.0
    Data container 'dev-rambbomj' loaded!
    New revision is 'rev.0-ciys.0'

    Notice that your existing data container now has revision rev.0-ciys.0

  9. You can now connect to this data container (database) and verify its content.

    $ psql -h instances.spawn.cc -p 53223 -U <some_user_id>
    psql (10.5, server 11.0 (Debian 11.0-1.pgdg90+2))
    SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
    Type "help" for help.
    <some_user_id>=# \dt
    Did not find any relations.

    Notice that there are no relations even though our data container at revision rev.1 had one table customers.