Cara Menginstal dbt Dengan Docker dan PostgreSQL
Pada artikel ini, saya akan membahas instalasi dbt menggunakan Docker dan PostgreSQL sebagai sumber data dan tujuan.
Saya akan menjelaskan setiap langkah dengan detail yang cukup bagi Anda untuk memperbanyaknya tanpa kesalahan.
Jika ada yang salah, tolong beri tahu saya agar saya dapat memperbarui konten dan menjaga panduan ini dengan benar selama mungkin
1. Periksa instalasi Docker
Pertama, periksa apakah Docker sudah terpasang dengan benar di komputer Anda.
Untuk melakukan ini, Anda dapat mengetikkan dua perintah berikut:
docker --version
Docker version 20.10.12, build e91ed57docker-compose --version
Docker Compose version v2.2.3
Jika tidak demikian, cara termudah adalah menginstal Docker Desktop (yang juga memiliki antarmuka grafis yang nyaman) dan menginstal versi yang sesuai dengan sistem operasi Anda.
Saya menguji manipulasi yang diusulkan pada Windows 10, Ubuntu 20.04 dan Mac OS X Montery.
2. Buat File Tulis Docker
Untuk saat ini (Maret 2023), tidak ada resep Docker resmi untuk menyiapkan lingkungan Docker lokal untuk dbt. Kami harus mengandalkan gambar Docker komunitas dan membangun konfigurasi kami.
Kami akan menggunakan gambar Docker dari repositori Github DataOps Pasal 1 [1], tempat Anda dapat menemukan beberapa gambar Docker yang sesuai dengan kebutuhan Anda.
Mari kita mulai dengan mudah dan gunakan gambar "lengkap" dalam konfigurasi docker-compose.yml :
version: '3'
services:
dbt:
image: article1dataops/dbt:latest
volumes:
- .:/usr/app
ports:
- "8080:8080"
# Required for the tutorial
db:
image: postgres
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: my_app
ports:
- "5432:5432"
Untuk mengikuti tutorial ini, salin file ini ke folder bernama dbt_app . Kemudian, dengan menggunakan terminal, Anda dapat mulai meminta Docker untuk menginstal dbt:
docker-compose up
docker ps
error during connect: This error may indicate that the docker daemon is not running.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json": open //./pipe/docker_engine: The specified file can't be found.
Terakhir, Anda juga dapat melihat ke dalam klien Docker Desktop UI: jika bilah status berwarna hijau, mesin dihidupkan dan berfungsi seperti yang diharapkan!
HIJAU = ✅
Setelah image diinstal, di masa mendatang, Anda hanya memerlukan instruksi docker-compose up "seperti biasa".
4. Init Proyek Anda: Perintah dbt init
Sekarang kita dapat menggunakan dbt untuk menginisialisasi dirinya sendiri menggunakan perintah dbt init [2]:
docker compose run dbt dbt init --profiles-dir /usr/app
# Replace "my_dbt_project" by the name of your dbt project
mv my_dbt_project/* .
rm -r my_dbt_project
5. Siapkan Database Pengujian PostgreSQL Anda
Anda mungkin telah mencatat bahwa konfigurasi Docker saya berisi gambar postgres dengan database. Meskipun tidak diperlukan , saya ingin Anda membuat tampilan dan tabel dari tutorial ini, seperti database lain yang mungkin harus Anda kerjakan.
Pertama, mari tambahkan beberapa tabel dan data ke database kita:
docker-compose exec db psql -U postgres -c "CREATE TABLE users(id SERIAL PRIMARY KEY, name VARCHAR(200), city_code VARCHAR(3));" my_app
docker-compose exec db psql -U postgres -c "INSERT INTO public.users(name, city_code) VALUES('mickael', 'BCN');" my_app
docker-compose exec db psql -U postgres -c "INSERT INTO public.users(name, city_code) VALUES('timmy', 'MAD');" my_app
docker-compose exec db psql -U postgres -c "INSERT INTO public.users(name, city_code) VALUES('jeane', 'PAR');" my_app
docker-compose exec db psql -U postgres -c "CREATE TABLE cities(city_code VARCHAR(3), city VARCHAR(200), country VARCHAR(200));" my_app
docker-compose exec db psql -U postgres -c "INSERT INTO public.cities(city_code, city, country) VALUES('BCN', 'Barcelona', 'Spain');" my_app
docker-compose exec db psql -U postgres -c "INSERT INTO public.cities(city_code, city, country) VALUES('MAD', 'Madrid', 'Spain');" my_app
docker-compose exec db psql -U postgres -c "INSERT INTO public.cities(city_code, city, country) VALUES('PAR', 'Paris', 'France');" my_app
docker-compose exec db psql -U postgres -c "SELECT * FROM users;" my_app
Database Creation: ✅
Konfigurasi sumber data harus diatur di file profiles.yml [3] .
Karena kami telah memilih PostgreSQL sebagai "gudang data" kami, dbt telah membuat template untuk kami:
# profiles.yml
app:
outputs:
dev:
type: postgres
threads: [1 or more]
host: [host]
port: [port]
user: [dev_username]
pass: [dev_password]
dbname: [dbname]
schema: [dev_schema]
prod:
type: postgres
threads: [1 or more]
host: [host]
port: [port]
user: [prod_username]
pass: [prod_password]
dbname: [dbname]
schema: [prod_schema]
target: dev
Properti targetmenyiapkan target utama saat Anda tidak menentukannya: seperti yang dapat Anda baca dari file, secara default, kami menampilkan transformasi dbt ke konfigurasi dev.
Anda dapat mengisi informasi yang diperlukan dengan pengaturan dari konfigurasi Docker. Anda dapat memilih jumlah utas sesuai dengan kekuatan komputer Anda. Sebagian besar waktu, saya memilih 4:
dev:
type: postgres
threads: 4
host: db
port: 5432
user: postgres
pass: password
dbname: my_app
schema: dev
docker compose run dbt dbt run
docker-compose exec db psql -U postgres -c "\dt" my_app
docker-compose exec db psql -U postgres -c "\dv" my_app
dbt transformations into PostgreSQL Database: ✅
Jika Anda ingin melihat kode secara mendalam, Anda dapat memeriksa repositori GitHub [4] yang saya buat untuk artikel ini.
Kesimpulan: Apa yang Telah Anda Pelajari?
- Cara mengatur proyek dbt dengan Docker;
- Cara mengonfigurasi menyiapkan sumber data untuk dbt: di sini, kami menggunakan database PostgreSQL dockerized
- Cara menjalankan transformasi ke dalam database dan memeriksa apakah berhasil.
[1] gambar Docker dbt
[2] Contoh data dari Airbyte Documentation
[3] Plugin Postgres dari Dokumentasi dbt
[4] Repositori proyek , di GitHub
Tingkatkan Pengodean
Terima kasih telah menjadi bagian dari komunitas kami! Sebelum kamu pergi:
- Tepuk tangan untuk ceritanya dan ikuti penulisnya
- Lihat lebih banyak konten di publikasi Level Up Coding
- Kursus wawancara coding gratis ⇒ Lihat Kursus
- Ikuti kami: Twitter | LinkedIn | Buletin

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































