Improve Tinybird login experience

- This helps clean up the TB setup since we no longer need to install the CLI tools locally
- The service dependency chaining is a bit annoying here but it should all work
- We have to change some of the mounts around because of how TB works
  and where it expects tokens to be
This commit is contained in:
James Loh
2025-06-25 16:06:11 +10:00
parent 57c084aac0
commit 29e86facec
4 changed files with 58 additions and 7 deletions

View File

@@ -116,21 +116,39 @@ services:
# Suporting Services
tinybird-login:
build:
context: ./tinybird
dockerfile: Dockerfile
working_dir: /home/tinybird
command: /usr/local/bin/tinybird-login
volumes:
- tinybird_home:/home/tinybird
- tinybird_files:/data/tinybird
profiles: [analytics]
networks:
- ghost_network
tty: true
restart: no
tinybird-sync:
# Do not alter this without updating the Ghost container as well
image: ghost:${GHOST_VERSION:-5-alpine}
command: >
sh -c "
if [ -d /var/lib/ghost/current/core/server/data/tinybird ]; then
rm -rf /shared/tinybird/*;
cp -rf /var/lib/ghost/current/core/server/data/tinybird/* /shared/tinybird/;
rm -rf /data/tinybird/*;
cp -rf /var/lib/ghost/current/core/server/data/tinybird/* /data/tinybird/;
echo 'Tinybird files synced into shared volume.';
else
echo 'Tinybird source directory not found.';
fi
"
volumes:
- tinybird_files:/shared/tinybird
- tinybird_files:/data/tinybird
depends_on:
tinybird-login:
condition: service_completed_successfully
networks:
- ghost_network
profiles: [analytics]
@@ -140,14 +158,14 @@ services:
build:
context: ./tinybird
dockerfile: Dockerfile
working_dir: /home/tinybird
working_dir: /data/tinybird
command: >
sh -c "
tb --cloud deploy
tb-wrapper --cloud deploy
"
volumes:
- .tinyb:/home/tinybird/.tinyb
- tinybird_files:/home/tinybird
- tinybird_home:/home/tinybird
- tinybird_files:/data/tinybird
depends_on:
tinybird-sync:
condition: service_completed_successfully
@@ -172,6 +190,7 @@ volumes:
caddy_data:
caddy_config:
tinybird_files:
tinybird_home:
networks:
ghost_network:

View File

@@ -9,6 +9,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
WORKDIR /home/tinybird
# Install Tinybird using the standard installation script
COPY handleLogin.sh /usr/local/bin/tinybird-login
COPY tb-wrapper /usr/local/bin/tb-wrapper
RUN curl https://tinybird.co | sh
ENV PATH="/root/.local/bin:$PATH"

11
tinybird/handleLogin.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/usr/bin/env bash
# Check if already logged in
if [[ -f "/home/tinybird/.tinyb" ]]
then
echo "Tinybird already logged in"
exit 0
fi
# Login to Tinybird
tb login --method code

18
tinybird/tb-wrapper Executable file
View File

@@ -0,0 +1,18 @@
#!/usr/bin/env bash
# Check if .tinyb exists in current directory
if [[ ! -f "./.tinyb" ]]
then
# If not, try to copy from home directory
if [[ -f "/home/tinybird/.tinyb" ]]
then
cp /home/tinybird/.tinyb ./.tinyb
echo "Copied .tinyb auth file to current directory"
else
echo "No .tinyb auth file found, please run 'docker compose run --rm tinybird-login' first to login"
exit 1
fi
fi
# Run the tinybird command
tb "$@"