Skip to main content

save data-container

Overview#

Saving a data container creates a new revision for that data container. To save a data container use the save command. Revisions are necessary for operations like reset, graduate and load.

Command#

spawnctl save data-container <ContainerName_Or_ContainerID>

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 finally save those changes.

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-rambbomj
    Saving container....
    Data container 'dev-rambbomj' saved!
    New revision is 'rev.1'
  8. You can also verify that a new revision was created by running the following command.

    $ spawnctl get data-containers
    NAME CONTAINER ID REVISION STATUS MESSAGE ENGINE CREATED
    dev-rambbomj 10001 rev.1 2 Running PostgreSQL 1 minute ago

    In this case the revision changed from rev.0 to rev.1.