この記事は、Md. Ehsanul Haque Kanan氏のブログの抄訳です
Dockerは、アプリケーションのデプロイメントプロセスを効率的に簡素化し、自動化するために非常に便利です。 そして迅速かつ一貫性を持ってソフトウェアをパッケージ化することができます。そのため、世界中の開発チームの間で非常に人気があります。このブログでは、RAD StudioからDockerへのアプリケーションのデプロイ(配置)の詳細について説明します。
Table of Contents
Dockerとは?
Dockerは、アプリケーションのビルド、デプロイ、管理するためのオープンソースのコンテナ化プラットフォームです。 アプリをコンテナにパッケージ化することで、デプロイメントプロセスを大幅に簡素化でき、製品開発のライフサイクルから反復的なタスクを取り除き、アプリケーションのビルドプロセスを加速させます。
なぜDockerを使うべきなのか?
- 開発ライフサイクルを効率化し、アプリケーションを迅速かつ一貫性をもってデプロイ可能
- レスポンシブなデプロイとスケーリングをサポート
- 軽量、高速、低コストのソリューションを提供
また一般の仮想マシン(VM)と比較すると、以下の点でメリットがあります。
- コンテナの準備はコマンドを少し実行するだけで、ほとんど自動化が可能
- 実行に必要なディスク容量が少ない
- 動作時のCPUリソース、メモリが少ない
- 必要なときにすぐに起動できる(ほぼ一瞬)
RAD Studio から Docker コンテナにアプリをデプロイする方法
RAD StudioからDockerへのデプロイはとても簡単です。必要な事項も含めて以下で、手順を説明いたします、
(1) まず、RADServerDockerDeploy.dpr というファイルを作成します。 このファイルには、プロジェクトのメインファイルのソースコードが含まれています。
(2)それでは、これから順番に.dprファイルに対して必要なコードを実装していきます。
program RADServerDockerDeploy;
{$APPTYPE CONSOLE}
{$R *.res}
(3) System.Classes、System.Types、System.SysUtilsの他、さまざまなユニットをuses句に定義します。
uses
System.Classes,
System.Types,
System.SysUtils,
{$IF DEFINED(POSIX)}
Posix.Stdlib,
{$ENDIF POSIX}
IniFiles;
(4)サーバーパッケージ、サーバーモジュールパス、およびターゲット設定パスを指定します。
const SERVER_PACKAGES = 'Server.Packages'; TARGET_MODULE_PATH = '/etc/ems/module.so'; TARGET_SETTINGS_PATH = '/etc/ems/emsserver.ini';
(5)ResStream、IniFile、およびコマンド変数を定義します。
var
ResStream: TResourceStream;
IniFile: TMemIniFile;
{$IF DEFINED(POSIX)}
LCommand: String;
{$ENDIF}
(6)最後に、以下のコードをまとめて実装します。
begin
try
// Add your RAD Server resource module .so file via Project|Resources and Images...|Add...
// Be sure to set Identifier to Module and Type should be set to RCDATA
ResStream := TResourceStream.Create(HInstance, 'Module', RT_RCDATA);
try
ResStream.Position := 0;
ResStream.SaveToFile(TARGET_MODULE_PATH);
finally
ResStream.Free;
end;
IniFile := TMemIniFile.Create(TARGET_SETTINGS_PATH);
IniFile.EraseSection(SERVER_PACKAGES);
IniFile.WriteString(SERVER_PACKAGES,TARGET_MODULE_PATH,ExtractFileName(TARGET_MODULE_PATH));
IniFile.UpdateFile;
IniFile.Free;
{$IF DEFINED(POSIX)}
LCommand := 'service apache2 restart';
_system(PAnsiChar(AnsiString(LCommand)));
{$ENDIF POSIX}
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
アプリをDockerにデプロイするソースコードを入手するには?
アプリをDockerにデプロイするための完全なサンプルのソースコードは以下のURLから入手できます。
https://github.com/Embarcadero/pa-radserver-ib-docker/
デプロイには本当にDockerを使うべきでしょうか?
Dockerを使用すると、デプロイ時間を数秒に短縮できます。 そのため、プロセス全体が非常に迅速になります。 さらに、Dockerには環境上の制限がないため、デプロイの一貫性と拡張性が向上します。 もし興味をもちましたら、ぜひDockerの利用を検討してみてください。
Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Free Delphi Community Edition Free C++Builder Community Edition







