3.Wantedlab-Dockerへの配備(会社情報を管理するAPI)
今回は機能実装ではなく、Dockerを利用して導入環境を作成します.RDSを使用せずにDocker-Composeを使用することを決定し、MySQLサーバコンテナとAPIサーバコンテナを同時に実行します.
課題項目の概要
機能実装チームの開発では、FastAPIチュートリアルを使用して簡単なAPIを作成し、ローカル環境でDockerを使用してサーバを起動することを決定します.接続mysqlはsqlalchemy ormを使用します.
環境変数を管理するために、
FastAPIの学習と比較して、アプリケーションとDBサーバを同時に導入することを目標としています.問題はMySQLですが、appに正しく接続されていないデータベース権限の問題が発生しています.docker-composeファイルのDB関連設定では、この項目にユーザーとパスワードが設定されていますが、適用されないようです.数回の検索なしにコンテナを実行すると、MySQLサーバにappに接続されたユーザーとパスワードが生成されます.実行コンテナはdbユーザを自動的に生成しません.
MySQL権限の問題は次のように解決されます. docker execコマンドを使用してdockerコンテナにアクセスし、MySQLにログインします. コンテナを実行する場合は、指定したrootパスワードを入力します. (コンテナ内)のデータベースとユーザーを生成し、MySQLで認証します.
FastAPIとMySQLを使用しているので、簡単に導入できます.上記で確認した不許可操作エラーも、ユーザーの作成と権限の付与によって直ちに解決されます.
配布するときに気になるのは、秘密やデータベースのパスワードなどの機密情報をどのように管理するかです.envファイルに単独で記述し、docker-composeファイルで
ある意味では、他の人がプロジェクトをプレゼンテーションするときは面倒かもしれませんが、秘密情報を分離して管理する必要があると思います.
感じと改善
Dockerの概念と役割を理解し、導入を試みることができます.しかし,コンテナの操作原理や各種ファイルパスについては,さらに学習する必要がある.Docker fileの
これまで8000個のポートがローカルで使用され、dbタイプに応じてmysqlは3306個のポートが使用されていた.host ipはコンピュータのアドレスとして理解され、portはそのコンピュータから接続するプログラムのアドレスとして理解される.
最初はdocker-composeファイルにポート
EC 2サーバでDockerコンテナはどのように動作しますか?コンテナのフォルダ構造はどうですか.dbボリュームのパスはどのような基準で指定しますか.導入されたサーバとコンテナはどのように通信しますか?
->ドッキングステーションをよりよく利用するためには、まずこれらの質問に答えるべきです.
Dockerを使用しない場合、従来の導入方法はAWSにEC 2とRDSを作成し、これらのRDSをアプリケーションDB設定に追加することです.RDSはローカルでも接続可能であるため、DBのダンプが容易である.
今回はRDSではなく、DBサーバをコンテナとして実行します.
DBによると、毎回RDSを作成する必要はありません.RDSでサポートされていないタイプのDBをパッケージ化することもできます.
コンテナとして動作するDBサーバ上のデータの管理方法ダンプできますか?
->dumpファイルをサーバに配置し、docker-composeファイルのdbの
DBを実行する3つの方法 EC 2にDB,2を取り付けます.RDS,3に接続します.EC 2ビットコンテナを使用してDBを実行
ビットの3つの方法の長所と短所を見つけた. Use RDS or a container (ECS) for database? Advantages and disadvantages
データをダンプする過程で、確かにRDSを使う時よりもDBアクセスに慣れていないことに悩んでいます.稼働しているDBコンテナとEC 2サーバの間でデータ通信を行う方法を知りたいです.共有フォルダを介して接続されている通路があるが、時間の関係でよく理解できなかったことが分かった.分散データベース・サーバのデータを管理する必要があるので、この部分をさらに理解します.
コメントリスト
なぜドック(コンテナ)を使わなければならないのですか?
ポイントコンピューティングを使用して完全な開発環境を構成
DockerによるMySQLのインストール
課題項目の概要
チャレンジレコードライブラリリンクの発行
APIドキュメントリンク
開発プロセス
1日目-DockerとMySQL
1日目-DockerとMySQL
機能実装チームの開発では、FastAPIチュートリアルを使用して簡単なAPIを作成し、ローカル環境でDockerを使用してサーバを起動することを決定します.接続mysqlはsqlalchemy ormを使用します.
環境変数を管理するために、
.env
ファイルをローカルとデプロイに分割します.compose
フォルダを作成し、ローカル開発環境と導入環境に分けてDockerfileを作成します.docker-compose
のために作成されたymlファイルも環境に応じて区分され、このプロセスによって環境に応じて異なる設定を管理する方法がわかります.FastAPIの学習と比較して、アプリケーションとDBサーバを同時に導入することを目標としています.問題はMySQLですが、appに正しく接続されていないデータベース権限の問題が発生しています.docker-composeファイルのDB関連設定では、この項目にユーザーとパスワードが設定されていますが、適用されないようです.数回の検索なしにコンテナを実行すると、MySQLサーバにappに接続されたユーザーとパスワードが生成されます.実行コンテナはdbユーザを自動的に生成しません.
MySQL権限の問題は次のように解決されます.
docker exec -it <컨테이너 이름> bash
mysql -u root -p
mysql> CREATE USER '유저이름'@'%' IDENTIFIED BY '패스워드';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO '유저이름'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
2日目-DjangoプロジェクトDocker Componentに配備
FastAPIとMySQLを使用しているので、簡単に導入できます.上記で確認した不許可操作エラーも、ユーザーの作成と権限の付与によって直ちに解決されます.
配布するときに気になるのは、秘密やデータベースのパスワードなどの機密情報をどのように管理するかです.envファイルに単独で記述し、docker-composeファイルで
env_file:
オプションのロード方法を選択します.配備はGithubにプロジェクトを公開しEC 2でクローン化するように行われ、envファイルを公開リポジトリにアップロードできないため、READMEを作成し、EC 2で直接作成して使用する.ある意味では、他の人がプロジェクトをプレゼンテーションするときは面倒かもしれませんが、秘密情報を分離して管理する必要があると思います.
感じと改善
DockerとNetworkについて
Dockerの概念と役割を理解し、導入を試みることができます.しかし,コンテナの操作原理や各種ファイルパスについては,さらに学習する必要がある.Docker fileの
WORKDIR
とdocker-compose fileのvolumes
に関する項目はよく理解できず、参考資料を見て、その通りにするところが大きいです.これまで8000個のポートがローカルで使用され、dbタイプに応じてmysqlは3306個のポートが使用されていた.host ipはコンピュータのアドレスとして理解され、portはそのコンピュータから接続するプログラムのアドレスとして理解される.
最初はdocker-composeファイルにポート
8000:8000
が設定されず、:8000
のみが設定された結果、dockerは任意にポートが設定され、サーバは実行中であったがブラウザから接続できなかった.ある意味では、ネットワークに対する理解が欠けているため、エラーが発生する簡単な問題です.->ドッキングステーションをよりよく利用するためには、まずこれらの質問に答えるべきです.
DBサーバの配備:RDSとDocker?
Dockerを使用しない場合、従来の導入方法はAWSにEC 2とRDSを作成し、これらのRDSをアプリケーションDB設定に追加することです.RDSはローカルでも接続可能であるため、DBのダンプが容易である.
今回はRDSではなく、DBサーバをコンテナとして実行します.
DBによると、毎回RDSを作成する必要はありません.RDSでサポートされていないタイプのDBをパッケージ化することもできます.
コンテナとして動作するDBサーバ上のデータの管理方法ダンプできますか?
->dumpファイルをサーバに配置し、docker-composeファイルのdbの
volumes:
部分にdumpを設定します.これにより、コンテナが動作すると、データはdbにダンプされます.DBを実行する3つの方法
データをダンプする過程で、確かにRDSを使う時よりもDBアクセスに慣れていないことに悩んでいます.稼働しているDBコンテナとEC 2サーバの間でデータ通信を行う方法を知りたいです.共有フォルダを介して接続されている通路があるが、時間の関係でよく理解できなかったことが分かった.分散データベース・サーバのデータを管理する必要があるので、この部分をさらに理解します.
コメントリスト
なぜドック(コンテナ)を使わなければならないのですか?
ポイントコンピューティングを使用して完全な開発環境を構成
DockerによるMySQLのインストール
Reference
この問題について(3.Wantedlab-Dockerへの配備(会社情報を管理するAPI)), 我々は、より多くの情報をここで見つけました https://velog.io/@palza4dev/3.-Wantedlab-회사-정보를-관리하는-APIテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol