Ubuntu18.04でPrismaサーバーを手動でセットアップする方法
警告:このチュートリアルは古く、メンテナンスされていません。 これは、現在活発に開発されていないPrisma1に基づいています。 Prisma の最新バージョンに関するすべてを学ぶには、公式のPrismaドキュメントにアクセスしてください。
Prismaを使用してサーバー側アプリケーションを構築する方法を学びたい場合は、次の新しいチュートリアルに従うことができます。
序章
Prisma は、アプリケーションの従来のオブジェクトリレーショナルマッピングツール(ORM)に代わるデータレイヤーです。 Prismaは、GraphQLサーバーとREST APIの両方の構築をサポートし、タイプセーフティに重点を置いてデータベースアクセスを簡素化し、宣言型データベース移行を可能にします。 型安全性は、潜在的なコードエラーと不整合を減らすのに役立ちますが、宣言型データベースの移行により、データモデルをバージョン管理に保存できます。 これらの機能は、開発者がデータベースアクセス、移行、およびデータ管理ワークフローの設定に集中する時間を削減するのに役立ちます。
データベースのプロキシとして機能するPrismaサーバーをさまざまな方法で展開し、リモートまたはローカルでホストできます。 Prismaサービスを介して、データにアクセスし、GraphQL APIを使用してデータベースに接続できます。これにより、リアルタイム操作と、データの作成、更新、および削除が可能になります。 GraphQLはAPIのクエリ言語であり、ユーザーがクエリを送信して、サーバーから必要な正確なデータにアクセスできるようにします。 Prismaサーバーは、データベースの最上位にあるスタンドアロンコンポーネントです。
このチュートリアルでは、Ubuntu 18.04にPrismaサーバーを手動でインストールし、 GraphQLPlaygroundでテストGraphQLクエリを実行します。 リモートサーバーでPrismaを実行しながら、Prismaセットアップコードと開発をローカル(実際にアプリケーションをビルドする場所)でホストします。 インストールを手動で実行することにより、セットアップの基盤となるインフラストラクチャをより深く理解し、カスタマイズできるようになります。
このチュートリアルでは、Ubuntu 18.04サーバーにPrismaをデプロイするための手動の手順について説明しますが、Prismaのサイトでこのチュートリアルに従うことで、DockerMachineを使用してより自動化された方法でこれを実行することもできます。
注:このセクションで説明するセットアップには、自動バックアップやアクティブフェイルオーバーなど、本番環境対応サーバーに通常期待される機能は含まれていません。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- 初期サーバーセットアップガイドに従ってセットアップされたUbuntu18.04サーバー(sudo非rootユーザーを含む)。
- サーバーにDockerがインストールされています。 これを実現するには、 Dockerインストール(Ubuntu 18.04チュートリアル)のステップ1に従います。
- DockerComposeがインストールされています。 この手順については、DockerComposeのインストールのステップ1を参照してください。
- サーバーにインストールされているNode.js。 これは、Node.jsのインストールチュートリアルのPPAセクションを実行することで実現できます。
ステップ1—Prismaサーバーを起動する
Prisma CLIは、Prismaサービスの展開と管理に使用される主要なツールです。 サービスを開始するには、必要なインフラストラクチャをセットアップする必要があります。これには、Prismaサーバーとそれに接続するためのデータベースが含まれます。
Docker Composeを使用すると、マルチコンテナーアプリケーションを管理および実行できます。 これを使用して、Prismaサービスに必要なインフラストラクチャをセットアップします。
まず、を作成します docker-compose.yml
Prismaサービス構成をサーバーに保存するファイル。 このファイルを使用して、関連するデータベースであるPrismaを自動的に起動し、必要な詳細をすべて1つのステップで構成します。 ファイルがDockerComposeでスピンアップされると、データベースのパスワードが構成されるため、必ず次のパスワードを置き換えてください。 managementAPIsecret
と MYSQL_ROOT_PASSWORD
安全なもので。 次のコマンドを実行して、 docker-compose.yml
ファイル:
- sudo nano docker-compose.yml
次のコンテンツをファイルに追加して、Prismaセットアップのサービスとボリュームを定義します。
version: "3"
services:
prisma:
image: prismagraphql/prisma:1.20
restart: always
ports:
- "4466:4466"
environment:
PRISMA_CONFIG: |
port: 4466
managementApiSecret: my-secret
databases:
default:
connector: mysql
host: mysql
port: 3306
user: root
password: prisma
migrations: true
mysql:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: prisma
volumes:
- mysql:/var/lib/mysql
volumes:
mysql:
この構成は次のことを行います。
- 2つのサービスを開始します。
prisma-db
とdb
. - Prismaの最新バージョンを取り込みます。 この記事の執筆時点では、それはPrisma1.20です。
- Prismaが使用できるポートを設定し、MySQLデータベースに接続するためのすべての資格情報を指定します。
databases
セクション。
The docker-compose.yml
ファイルは managementApiSecret
、これにより、他のユーザーがエンドポイントの知識を持ってデータにアクセスできなくなります。 このチュートリアルをテスト展開以外の目的で使用している場合は、 managementAPIsecret
より安全なものに。 その際は、後で入力できるように、必ず覚えておいてください。 prisma init
処理する。
このファイルは、MySQL Dockerイメージも取得し、それらの資格情報も設定します。 このチュートリアルの目的上、このDocker ComposeファイルはMySQLイメージを起動しますが、PrismaでPostgreSQLを使用することもできます。 両方のDockerイメージはDockerハブで利用できます。
ファイルを保存して終了します。
すべての詳細を保存したので、Dockerコンテナーを起動できます。 The -d
コマンドは、コンテナをデタッチモードで実行するように指示します。つまり、コンテナはバックグラウンドで実行されます。
- sudo docker-compose up -d
これにより、両方のDockerイメージがフェッチされます prisma
と mysql
. 次のコマンドを使用して、Dockerコンテナーが実行されていることを確認できます。
- sudo docker ps
次のような出力が表示されます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
24f4dd6222b1 prismagraphql/prisma:1.12 "/bin/sh -c /app/sta…" 15 seconds ago Up 1 second 0.0.0.0:4466->4466/tcp root_prisma_1
d8cc3a393a9f mysql:5.7 "docker-entrypoint.s…" 15 seconds ago Up 13 seconds 3306/tcp root_mysql_1
Prismaサーバーとデータベースをセットアップすると、Prismaサービスをローカルで展開する準備が整います。
ステップ2—Prismaをローカルにインストールする
Prismaサーバーは、Prismaサービスのランタイム環境を提供します。 Prismaサーバーを起動したので、Prismaサービスをデプロイできます。 これらの手順は、サーバーではなくローカルで実行します。
まず、すべてのPrismaファイルを含む別のフォルダーを作成します。
- mkdir prisma
次に、そのフォルダに移動します。
- cd prisma
MacOSを使用している場合は、HomebrewでPrismaをインストールできます。 これを行うには、次のコマンドを実行してPrismaリポジトリを追加します。
- brew tap prisma/prisma
次に、次のコマンドを使用してPrismaをインストールできます。
- brew install prisma
または代わりに、 npm
:
- npm install -g prisma
Prismaをローカルにインストールすると、新しいPrismaサービスをブートストラップする準備が整います。
ステップ3—新しいPrismaサービスの構成を作成する
インストール後、使用できます prisma init
Prismaを使用してアプリケーションを構築するために必要なファイルを生成する新しいPrismaデータベースAPIのファイル構造を作成します。 エンドポイントは自動的に prisma.yml
ファイル、および datamodel.prisma
次のステップでクエリできるサンプルデータモデルがすでに含まれています。 データモデルは、Prisma APIの基盤として機能し、アプリケーションのモデルを指定します。 この時点では、ファイルとサンプルデータモデルのみを作成しています。 実行するまで、データベースに変更を加えていません prisma deploy
このステップの後半。
これで、次のコマンドをローカルで実行して、新しいファイル構造を作成できます。
- prisma init hello-world
このコマンドを実行すると、インタラクティブなプロンプトが表示されます。 求められたら、を選択します。 Use other server
を押して ENTER
:
Output Set up a new Prisma server or deploy to an existing server?
You can set up Prisma for local development (based on docker-compose)
Use existing database Connect to existing database
Create new database Set up a local database using Docker
Or deploy to an existing Prisma server:
Demo server Hosted demo environment incl. database (requires login)
❯ Use other server Manually provide endpoint of a running Prisma server
次に、Prismaサーバーとして機能しているサーバーのエンドポイントを提供します。 次のようになります。 http://SERVER_IP_ADDRESS:4466
. エンドポイントがhttp(またはhttps)で始まり、ポート番号が示されていることが重要です。
OutputEnter the endpoint of your Prisma server http://SERVER_IP_ADDRESS:4466
管理APIシークレットについては、構成ファイルで前に指定したフレーズまたはパスワードを入力します。
OutputEnter the management API secret my-secret
以降のオプションでは、を押してデフォルトの変数を選択できます ENTER
のために service name
と service stage
:
OutputChoose a name for your service hello-world
Choose a name for your stage dev
Prismaクライアントのプログラミング言語の選択肢も提供されます。 この場合、お好みの言語を選択できます。 クライアントの詳細については、こちらをご覧ください。
Output Select the programming language for the generated Prisma client (Use arrow keys)
❯ Prisma TypeScript Client
Prisma Flow Client
Prisma JavaScript Client
Prisma Go Client
Don't generate
プロンプトを完了すると、選択内容を確認する次の出力が表示されます。
OutputCreated 3 new files:
prisma.yml Prisma service definition
datamodel.prisma GraphQL SDL-based datamodel (foundation for database)
.env Env file including PRISMA_API_MANAGEMENT_SECRET
Next steps:
1. Open folder: cd hello-world
2. Deploy your Prisma service: prisma deploy
3. Read more about deploying services:
http://bit.ly/prisma-deploy-services
に移動します hello-world
ディレクトリ:
- cd hello-world
これらの変更をサーバーに同期します prisma deploy
. これにより、ローカルマシンからPrismaサーバーに情報が送信され、Prismaサーバー上にPrismaサービスが作成されます。
- prisma deploy
注:実行中 prisma deploy
Prismaサービスを再度更新します。
出力は次のようになります。
OutputCreating stage dev for service hello-world ✔
Deploying service `hello-world` to stage 'dev' to server 'default' 468ms
Changes:
User (Type)
+ Created type `User`
+ Created field `id` of type `GraphQLID!`
+ Created field `name` of type `String!`
+ Created field `updatedAt` of type `DateTime!`
+ Created field `createdAt` of type `DateTime!`
Applying changes 716ms
Your Prisma GraphQL database endpoint is live:
HTTP: http://SERVER_IP_ADDRESS:4466/hello-world/dev
WS: ws://SERVER_IP_ADDRESS:4466/hello-world/dev
出力は、Prismaがデータモデル(で作成された)に従ってデータベースを更新したことを示しています。 prisma init
ステップ)タイプ User
. タイプはデータモデルの重要な部分です。 これらはアプリケーションのアイテムを表し、各タイプには複数のフィールドが含まれています。 データモデルの場合、ユーザーを説明する関連フィールドは、ユーザーのID、名前、作成された時刻、および更新された時刻です。
この段階で問題が発生し、別の出力が得られた場合は、対話型プロンプトですべてのフィールドを正しく入力したことを再確認してください。 あなたはの内容を確認することによってそうすることができます prisma.yml
ファイル。
Prismaサービスを実行すると、2つの異なるエンドポイントに接続できます。
-
で利用可能な管理インターフェイス
http://SERVER_IP_ADDRESS:4466/management
、Prismaサービスを管理および展開できる場所。 -
Prismaサービス用のGraphQLAPIは、次のURLで入手できます。
http://SERVER_IP_ADDRESS:4466/hello-world/dev
.
Prismaサーバーのセットアップとデプロイが正常に完了しました。 これで、GraphQLでクエリとミューテーションを調べることができます。
ステップ4—サンプルクエリの実行
Prismaの別のユースケースを調べるために、サーバー上のオープンソースのGraphQL統合開発環境(IDE)であるGraphQLプレイグラウンドツールを試すことができます。 アクセスするには、前の手順でブラウザのエンドポイントにアクセスします。
http://SERVER_IP_ADDRESS:4466/hello-world/dev
mutation は、GraphQLを介してバックエンドのデータを変更(作成、更新、または削除(CRUD))する方法を説明するGraphQL用語です。 ミューテーションを送信して、新しいユーザーを作成し、機能を調べることができます。 これを行うには、ページの左側で次のミューテーションを実行します。
mutation {
createUser(data: { name: "Alice" }) {
id
name
}
}
再生ボタンを押すと、ページの右側に結果が表示されます。
その後、を使用してユーザーを検索する場合 ID
データベースの列で、次のクエリを実行できます。
query {
user(where: { id: "cjkar2d62000k0847xuh4g70o" }) {
id
name
}
}
これで、Prismaサーバーとサービスがサーバー上で稼働し、GraphQLのIDEでテストクエリを実行しました。
結論
サーバー上に機能しているPrismaセットアップがあります。 Prismaのその他の使用例と次の手順については、入門ガイドを参照するか、 PrismaDocsでPrismaの機能セットを確認してください。 このチュートリアルのすべての手順を完了すると、データベースへの接続を確認するためのいくつかのオプションがあります。1つの可能性は、 PrismaClientを使用することです。
警告:このチュートリアルは古く、メンテナンスされていません。 これは、現在活発に開発されていないPrisma1に基づいています。 Prisma の最新バージョンに関するすべてを学ぶには、公式のPrismaドキュメントにアクセスしてください。
Prismaを使用してサーバー側アプリケーションを構築する方法を学びたい場合は、次の新しいチュートリアルに従うことができます。