tursodatabase/turso-cli

Docker image for easier development?

Opened this issue · 5 comments

Reference, thread on discord: https://discord.com/channels/933071162680958986/933071163184283651/1154540600293609652

User suggests - and I agree - that it would be helpful to provide a docker image that includes the turso cli, the libsql-server, and ways to mount existing SQLite files into the libsql-server directories. This could be helpful for some CI pipelines

The way I would use it is with a docker-compose.yaml file like the following:

version: "3.8"
services:
  sqld:
    image: ghcr.io/libsql/sqld:v0.20.3
    ports:
      - "8080:8080"
  
  bootstrap-db:
    image: turso
    volumes:
      - ./database:/bootstrap
    working_dir: /bootstrap
    command: ["db", "shell", "$SQLD_URL", "<", "init.sql"]
    environment:
      SQLD_URL: http://sqld:8080
    depends_on:
      - sqld

  my-astro-app:
    image: node:18.14.1
    ports:
      - "4321:4321"
    volumes:
      - ./:/app
    working_dir: /app
    command: npm run dev -- --host
    environment:
      SQLD_URL: http://sqld:8080
    depends_on:
      - sqld
      - bootstrap-db

Alternatively, instead of running a bootstrapping sql script you could mount an sqlite file:

services:
  sqld:
    image: ghcr.io/libsql/sqld:v0.20.3
    ports:
      - "8080:8080"
    volumes:
      - ./db.sqlite:/var/lib/sqld

Another thing that I see often is adding tooling helpers into a docker compose file. For example:

services:
  turso:
    image: turso
    working_dir: /app
    volumes:
      - ./:/app

Paired with alias dcr = "docker compose run --rm" allowing for dcr turso [COMMAND] when in the project directory. This prevents bespoke tooling installs if you're constantly dealing with different technologies and it also means the whole development team is running the same version of the tooling in the same way.

Just some ways in which I might use this. Hope it helps!

Hi, any update on the status of this? In the interim I have published my own image so that I can be unblocked but it would be great to have this officially be a part of your pipeline.

Here's the Dockerfile I used. Mostly a copy + paste of your libsql-server image with some extra stages.

Yeah I think this makes a lot of sense to add, will make sure it gets added to the roadmap.

@LucioFranco do we have any updates about it?

Any updates?