Docker Compose 実稼働環境用の Space の構成
Space オンプレミスインスタンスのカスタマイズを有効にする
Space On-Premises の Docker Compose インストールには、すぐに使用できる事前定義された構成が付属しています。ただし、Space On-Premises を運用環境で動作させるには、追加の構成を実行する必要があります。
Space オンプレミス構成は、Space アプリケーションコンテナーに保存される conf
ファイルのセットです。Space オンプレミスを構成するには、ファイルをホストマシンにコピーして変更し、Space が新しいファイルの場所を指すようにする必要があります。
{space_install_dir/config}
ディレクトリ (例:space-on-premises/config
) を開き、次を実行します。docker cp {space_container_id}:/home/space/circlet-server-onprem/config .次の構成ファイルがホストマシンの
{space_install_dir/config}
ディレクトリにコピーされます。langservice.on-premises.conf
packages.on-premises.conf
space.on-premises.conf
vcs.on-premises.properties
必要に応じて構成ファイルを編集します。
Space インスタンスを停止します。
docker-compose -p space-on-premises down docker-compose -p space-on-premises rm -fSpace インストールディレクトリにある
docker-compose.yml
ファイルを開きます。Space 構成ファイルのデフォルトの場所を変更します。これを行うには、
docker-compose.yml
ファイルを編集します。config:{}
行をコメントアウトします。... # config:{} ...docker ボリューム構成へのすべての参照を
config
から./config
に変更します。つまり、以下から。... volumes: - config:/home/init-config/config ... volumes: - config:/home/space/circlet-server-onprem/config ... volumes: - config:/home/space/git/vcs-hosting/config ... volumes: - config:/home/space/packages-server/config ... volumes: - config:/home/space/langservice-server/config ...終了:
... volumes: - ./config:/home/init-config/config ... volumes: - ./config:/home/space/circlet-server-onprem/config ... volumes: - ./config:/home/space/git/vcs-hosting/config ... volumes: - ./config:/home/space/packages-server/config ... volumes: - ./config:/home/space/langservice-server/config ...
更新された構成で Space On-Premises を開始します。
docker-compose -p space-on-premises up -d
Space On-Premises インスタンスをネットワークからアクセスできるようにする
デフォルトでは、Space On-Premises の Docker Compose インストールでは、ベース URL として 127.0.0.1
および localhost
が使用されます。この構成は、Space をローカルで実行する場合の概念実証シナリオでのみ適切に機能します。Space を別のマシンで実行し、ネットワークにアクセスできるようにする場合は、nginx Web サーバーを使用する必要があります。これはリバースプロキシとして機能し、リクエストを Space にリダイレクトします。
前提条件:
Space コンポーネントのドメイン名はすでに登録されており、ホストマシンの IP アドレスに解決されます。Space コンポーネントには、Space アプリケーション、VCS、パッケージサーバーが含まれます。この例では、
space.example.com
、git.example.com
、packages.example.com
という名前を使用します。対応する TLS 証明書がホストマシンにインストールされます。証明書は、信頼できる認証局 (例: 暗号化しましょう (英語)) から取得できます。
ホストマシンには nginx Web サーバーがインストールされています。インストール手順は公式 Web サイト(英語)でご覧いただけます。
ホストマシンの
/etc/nginx/conf.d
ディレクトリにspace.conf
NGINX 構成ファイルを作成します。例:server { client_max_body_size 0; server_name space.example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8084/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } listen 443 ssl; ssl_certificate /path_to_certs/space.example.com/fullchain.pem; ssl_certificate_key /path_to_certs/space.example.com/privkey.pem; } server { client_max_body_size 0; server_name git.example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8080/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } listen 443 ssl; ssl_certificate /path_to_certs/git.example.com/fullchain.pem; ssl_certificate_key /path_to_certs/git.example.com/privkey.pem; } server { client_max_body_size 0; server_name packages.example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:8390/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } listen 443 ssl; ssl_certificate /path_to_certs/packages.example.com/fullchain.pem; ssl_certificate_key /path_to_certs/packages.example.com/privkey.pem; } server { client_max_body_size 0; server_name minio.example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://127.0.0.1:9000/; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } listen 443 ssl; ssl_certificate /path_to_certs/packages.example.com/fullchain.pem; ssl_certificate_key /path_to_certs/packages.example.com/privkey.pem; } # configuring HTTP redirects server { if ($host = space.example.com) { return 301 https://$host$request_uri; } server_name space.example.com; listen 80; return 404; } server { if ($host = git.example.com) { return 301 https://$host$request_uri; } server_name git.example.com; listen 80; return 404; } server { if ($host = packages.example.com) { return 301 https://$host$request_uri; } server_name packages.example.com; listen 80; return 404; } server { if ($host = minio.example.com) { return 301 https://$host$request_uri; } server_name minio.example.com; listen 80; return 404; }上の例では、次のように変更します。
証明書への実際のパスへのすべての
ssl_certificate
およびssl_certificate_key
パス。すべての
server_name
値 (space.example.com
、git.example.com
、packages.example.com
) を実際のドメイン名に変換します。
変更を保存し、構成を適用します。
sudo nginx -s reloadSpace インスタンスが実行中の場合は停止します。
Space のインストールディレクトリを開きます。
space.on-premises.conf
ファイルで、すべてのurl
およびaltUrls
パラメーターを新しい URL 値で更新します。例:circlet { frontend { url = "https://space.example.com" internalUrl = "http://space:9084" } packages { notifications { enabled = true } types { maven { url = "https://packages.example.com" } nuget { url = "https://packages.example.com" } npm { url = "https://packages.example.com" } container { url = "https://packages.example.com" } pypi { url = "https://packages.example.com" } composer { url = "https://packages.example.com" } dart { url = "https://packages.example.com" } files { url = "https://packages.example.com" } crates { url = "https://packages.example.com" } } } }packages.on-premises.conf
ファイルで、すべてのurl
およびinternalUrl
パラメーターを新しい URL 値で更新します。例:circlet { packages { url = "https://packages.example.com" internalUrl = "http://packages:9390" } space { url = "https://space.example.com" internalUrl = "http://space:9084" } storage { aws { publicUrl = "https://minio.example.com" } } }vcs.on-premises.properties
ファイルで、base.url
およびcirclet.url.ext
パラメーターを新しい URL 値で更新します。例:base.url=https://git.example.com circlet.url.int=http://space:9084 circlet.url.ext=https://space.example.com更新された構成で Space On-Premises を開始します。
docker-compose up -d
メールサーバーを有効にする
Docker Compose のインストールには、事前構成されたメールサーバーは含まれません。以下の手順は、MailHog メールサーバーを作成して Space に登録する方法を示しています。
Space インスタンスが実行中の場合は停止します。
Space のインストールディレクトリを開きます。
docker-compose.yml
ファイルに、メールサーバー構成を追加します。services: mailhog: image: mailhog/mailhog ports: - 1025:1025 # SMTP server port - 8025:8025 # UI port networks: - "frontend"Space にメールサーバーの設定を提供します。これは、Space 管理 UI を使用する方法と Space 構成ファイルを使用する方法の 2 つの方法で実行できます。
更新された構成で Space On-Premises を開始します。
docker-compose up -dブラウザーで Space インスタンスを開き、このページに示されているようにメール設定を指定します。
space.on-premises.conf
ファイルを開き、要件に従ってメール構成を変更します。mail { outgoing { enabled = true // protocol settings fromAddress = "space@space.example.com" host = "mailhog" port = 1025 protocol = "SMTP" // "SSL" and "TLS" are also supported login = "space" password = "space" messageQueuePrefix = "mailQueue" // handling properties aggregationDelaySecs = 900 rateLimitPerSecond = 3 } }更新された構成で Space On-Premises を開始します。
docker-compose up -d
(ケース固有) Space パッケージでの手動ダウンロードを有効にする
Space インスタンスにカスタムオブジェクトストレージを使用する場合は、任意のオリジンからの GET リクエストの受信を許可するように CORS ポリシーを構成する必要があります。
そうしないと、ユーザーは Space のリポジトリページからパッケージを手動でダウンロードできなくなります。ダウンロードボタンをクリックするとエラーになります。
AWS マネジメントコンソールにサインインし、Amazon S3 コンソール(英語)を開きます。
Space パッケージに使用される S3 バケットを開きます。
許可タブを開き、次の構成を CORS セクションに追加します。
[ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [] } ]変更内容を保管します。