---
title: "初めてSitecoreインスタンスを起動してください"
slug: "run-your-first-sitecore-instance"
abstract: "このトピックでは、カスタマイズなしでSitecore画像を起動・稼働させる方法を示しています。"
---
# 初めてSitecoreインスタンスを起動してください

このトピックでは、最小限の設定で箱から出した*Sitecore Experience Platform - Single(XP0)* インスタンスを素早く稼働させる方法を示しています。

> !注このトピックではシンプルにするために*Sitecore Experience Platform - Single(XP0)* 構成を使用していますが、どの設定でも同じ方法で開始できます。
> 
> 各SitecoreトポロジーのDocker Composeファイルは[Sitecoreダウンロードページ](https://dev.sitecore.net/downloads)からダウンロードできる*Sitecore Container Deployment Package*に含まれています。

このトピックは、ローカル環境がWindows上でDockerで開発できるように設定されていることを前提としています。詳細は [環境設定](https://doc.sitecore.com/xp/ja/developers/101/developer-tools/set-up-the-environment.html "Set up the environment") をご覧ください。Windowsコンテナに切り替えていることを確認してください。

有効なSitecoreライセンスファイルも持っている必要があります。

> !重要デフォルトのSitecoreコンテナ構成は特定のポートを使用しています。競合を避けるために、以下のポートが他のプロセスで使用されていないことを確認してください:443、8079、8081、8984、14330。

[Dockerのトラブルシューティング](https://doc.sitecore.com/xp/ja/developers/101/developer-tools/troubleshooting-docker.html "Troubleshooting Docker") アドバイスも利用可能です。

## Docker Examplesリポジトリをクローンする

まず[Docker Exampleリポジトリ](https://github.com/Sitecore/docker-examples) をマシン上のC:\\sitecore\\docker-examples\\ などの場所にクローンします(以下の手順はこのフォルダを使用していることを前提としています)。このトピックでは、リポジトリ内の*getting-start*フォルダを使用します。

PowerShellプロンプトを開き、*getting-start*フォルダに移動します。そこには以下のファイルが含まれています:

-   docker-compose.yml および .env : [Docker Compose](https://docs.docker.com/compose/) ファイルの種類。これらはバニラSitecoreインスタンスを起動するために必要な主要なファイルです。 *Sitecoreコンテナデプロイメントパッケージに含まれています*。
-   mssql-data、 solr-data、 traefik - Sitecoreインスタンス内のDockerコンテナで利用されるサポートフォルダー。 *Sitecoreコンテナデプロイメントパッケージに含まれています*。
-   init.ps1 および clean.ps1 - 例示ヘルパースクリプト。 *Sitecoreコンテナデプロイメントパッケージには含まれていません*。

これらの各点については、以下のセクションでより詳しく説明します。

## Docker Composeファイル

-   docker-compose.yml
    
    このComposeファイルはdocker composeコマンドで使用される主要な設定ファイルです。異なるコンテナ( *サービス*と呼ばれる)とその構成に関する情報が含まれています。
    
    Sitecoreの場合、サービスは一般的にトポロジーを構成する個々のSitecoreロール(mssql、solr、id、cmなど)を表します。
    
-   .env
    
    これは環境ファイルです。ここでの値は、Composeファイルで参照される環境変数(例: SITECORE\_DOCKER\_REGISTRY)のデフォルト値を提供します。またはComposeの設定(例: COMPOSE\_PROJECT\_NAME)に使います。
    

環境変数は、設定設定をコンテナに渡す推奨される方法です。 docker-compose.ymlファイルでSitecoreコンテナでどのように使われているかを見ることができます。例えばmssqlサービスは、SQL Server SAパスワード(SA\_PASSWORD)を設定する環境変数を設定します。

mssql:
 isolation: ${ISOLATION}
 image: ${SITECORE\_DOCKER\_REGISTRY}sitecore-xp0-mssql:${SITECORE\_VERSION}
 environment:
 SA\_PASSWORD: ${SQL\_SA\_PASSWORD}
 SITECORE\_ADMIN\_PASSWORD: ${SITECORE\_ADMIN\_PASSWORD}
 ACCEPT\_EULA: "Y"
 SQL\_SERVER: mssql
 ports:
 - "14330:1433"

値は変数置換(${SQL\_SA\_PASSWORD})を用いて .envファイルから取得されます。

> !注SQL Server SAのパスワードは[SQL Serverのパスワードポリシー](https://learn.microsoft.com/en-us/sql/relational-databases/security/password-policy) 要件を満たす必要があります。そうでなければ、SQL Serverコンテナが正しく動作しない可能性があります。

## 調理

リポジトリにはすべての準備ステップを自動的に実行するスクリプト、すなわちinit.ps1スクリプトが含まれています。

このスクリプトを実行するには:

1.  PowerShell管理者プロンプトを開きます。
    
2.  次のコマンドを実行し、\-LicenseXmlPathをSitecoreライセンスファイルの場所に置き換えてください:
    
    .\\init.ps1 -LicenseXmlPath C:\\License\\license.xml
    

スクリプトを使わない場合は、以下のセクションの手順に従ってください。

### Install SitecoreDockerTools

[SitecoreDockerTools](https://sitecore.myget.org/feed/sc-powershell/package/nuget/SitecoreDockerTools) PowerShellモジュールには、DockerベースのSitecore開発で使えるさまざまな補助コマンドレットがあります。これらのコマンドは準備作業を大幅に簡素化します(必須ではありませんが)。

PowerShellから以下のコマンドを実行してインストールするか、[SitecoreDockerToolsの手順](https://cloudsmith.io/~sitecore/repos/resources/packages/detail/nuget/SitecoreDockerTools/)に従ってください。

Register-PSRepository -Name "SitecoreGallery" -SourceLocation "https://nuget.sitecore.com/resources/v2/"
Install-Module SitecoreDockerTools

### 環境ファイルを埋める

.envファイルには以下の未割り当ての値があります:

COMPOSE\_PROJECT\_NAME=sitecore-xp0
SITECORE\_DOCKER\_REGISTRY=scr.sitecore.com/sxp/
SITECORE\_VERSION=10.1.0-ltsc2019
SITECORE\_ADMIN\_PASSWORD=
SQL\_SA\_PASSWORD=
TELERIK\_ENCRYPTION\_KEY=
SITECORE\_IDSECRET=
SITECORE\_ID\_CERTIFICATE=
SITECORE\_ID\_CERTIFICATE\_PASSWORD=
SITECORE\_LICENSE=
CM\_HOST=xp0cm.localhost
ID\_HOST=xp0id.localhost
TRAEFIK\_IMAGE=traefik:v2.2.0-windowsservercore-1809
TRAEFIK\_ISOLATION=hyperv
ISOLATION=default
SOLR\_CORE\_PREFIX\_NAME=sitecore
# You should change the shared secret to a random string and not use the default value
MEDIA\_REQUEST\_PROTECTION\_SHARED\_SECRET=HQ(NjM(u6\_5koVla-cTf4ta8x1h6Sb+ZcUQrULUz-0Afpx0cx-NuMtIoQkpDFmX5

コンテナ [付き開発者ワークステーションのインストールガイド](https://dev.sitecore.net/Downloads/Sitecore_Experience_Platform/101/Sitecore_Experience_Platform_101.aspx) には、これらの変数それぞれと指定できる値が説明されています。

この時点で指定された変数は更新する必要はありませんが、空の変数の値は指定する必要があります。

1.  SITECORE\_ADMIN\_PASSWORDとSQL\_SA\_PASSWORDを好きなパスワードに設定してください。
    
    > !注SQL SAパスワードは[SQL Serverの複雑さ要件](https://docs.microsoft.com/en-us/sql/relational-databases/security/password-policy)を満たす必要があります。
    
    また、*SitecoreDockerTools*モジュールを使ってこれらのパスワードをPowerShellで設定・生成することもできます。 init.ps1スクリプトは両方をPassword12345に設定します。
    
2.  Telerikの暗号鍵を設定するには、環境ファイルがあるフォルダで管理者として以下のPowerShellスクリプトを実行します:
    
    Import-Module SitecoreDockerTools
    Set-DockerComposeEnvFileVariable "TELERIK\_ENCRYPTION\_KEY" -Value (Get-SitecoreRandomString 128)
    
    これにより、*SitecoreDockerTools*モジュールをセッションにインポートし、次の2つのcmdletを使ってTELERIK\_ENCRYPTION\_KEY変数を設定します。
    
    -   Set-DockerComposeEnvFileVariable : はDocker Compose .env ファイルに変数値を設定します。
    -   Get-SitecoreRandomStringパスワードまたはキーとして使うランダムな文字列を返します。
3.  Identity Server変数を設定するには、以下のPowerShellスクリプトを実行します:
    
    Import-Module SitecoreDockerTools
    Set-DockerComposeEnvFileVariable "SITECORE\_IDSECRET" -Value (Get-SitecoreRandomString 64 -DisallowSpecial)
    $idCertPassword = Get-SitecoreRandomString 12 -DisallowSpecial
    Set-DockerComposeEnvFileVariable "SITECORE\_ID\_CERTIFICATE" -Value (Get-SitecoreCertificateAsBase64String -DnsName "localhost" -Password (ConvertTo-SecureString -String $idCertPassword -Force -AsPlainText))
    Set-DockerComposeEnvFileVariable "SITECORE\_ID\_CERTIFICATE\_PASSWORD" -Value $idCertPassword
    
    これはSITECORE\_IDSECRET、SITECORE\_ID\_CERTIFICATE、SITECORE\_ID\_CERTIFICATE\_PASSWORD変数を設定し、*SitecoreDockerTools*のaコマンドレットを用いて設定します。
    
    -   Get-SitecoreCertificateAsBase64String: 新しい自己署名証明書を生成し、パスワード保護されたBase64エンコード形式で証明書を返します。
4.  Sitecoreライセンス変数を設定するには、以下のPowerShellスクリプトを実行し、\-PathをSitecoreライセンスファイルの場所に置き換えます。
    
    Import-Module SitecoreDockerTools
    Set-DockerComposeEnvFileVariable "SITECORE\_LICENSE" -Value (ConvertTo-CompressedBase64String -Path "C:\\License\\license.xml")
    
    Sitecoreライセンスファイルは非常に大きく、[Windowsが許容する環境変数の最大サイズ](https://devblogs.microsoft.com/oldnewthing/20100203-00/?p=15083)に収まるために圧縮とBase64エンコードが必要です。*SitecoreDockerTools*のConvertTo-CompressedBase64Stringコマンドレットがこれを行います。
    
    > !注複数のSitecoreインスタンス間で変数を再利用するには、Docker Compose環境ファイルではなくWindowsで環境変数を設定することができます。
    
    > !注あるいは、各サービスにlicense.xmlファイルをマウントし、SITECORE\_LICENSE\_LOCATION変数を設定することもできます。xConnectサービスの場合、これはライセンスファイルを含むフォルダでなければなりません。その他のサービスでは、ファイル自体へのパスでなければなりません。
    

### TLS/HTTPS証明書の設定

Sitecoreは[Traefik](https://docs.traefik.io/)をDocker Composeのデフォルトのリバースプロキシまたはエッジルーターとして使用しています。 *getting-started\\traefik*フォルダには以下のものが含まれています:

-   *認定資格*
    
    生成した証明書を入れる空のフォルダです。
    
-   config/dynamic/certs\_config.yaml
    
    Traefikコンテナで使用されるTraefikの設定ファイル。
    

この*traefik*フォルダ全体はTraefikコンテナ用に提供されており、docker-compose.ymlファイル内にDocker[ボリューム](https://docs.docker.com/storage/volumes/)があります。

traefik:
 ...
 volumes:
 - source: \\\\.\\pipe\\docker\_engine
 target: \\\\.\\pipe\\docker\_engine
 type: npipe
 - ./traefik:C:/etc/traefik
 ...

*traefik*サービスは、相関の*./traefik*フォルダを*C:/etc/traefik*の実行中のコンテナにマッピングします。

このパスはTraefikサービス構成で使用され、\--providers.file.directoryはC:/etc/traefik/config/dynamic ( certs\_config.yamlファイルがある場所)として指定されます。詳細は[Traefikのドキュメント](https://docs.traefik.io/getting-started/configuration-overview/) をご覧ください。

certs\_config.yamlファイルはまた、*certs*フォルダ内の証明書を参照するためにもボリュームを使用します:

tls:
 certificates:
 - certFile: C:\\etc\\traefik\\certs\\xp0cm.localhost.crt
 keyFile: C:\\etc\\traefik\\certs\\xp0cm.localhost.key
 - certFile: C:\\etc\\traefik\\certs\\xp0id.localhost.crt
 keyFile: C:\\etc\\traefik\\certs\\xp0id.localhost.key

#### mkcertをインストール

[mkcert](https://github.com/FiloSottile/mkcert)ユーティリティを使って必要な証明書を作成します。

mkcertをインストールするには:

1.  [最新のWindows実行ファイルをダウンロードしてください。](https://github.com/FiloSottile/mkcert/releases)
2.  ファイル名を mkcert.exeに変更しました。
3.  ファイルをPATH環境変数のいずれかにあるディレクトリに移動してください。例えば C:\\Windows\\system32。
4.  管理者モードでコマンドプロンプトを開き、実行してください mkcert -install

[Chocolatey](https://chocolatey.org/)を使用している場合は、以下のコマンドでmkcertをインストールできます:

choco install mkcert
mkcert -install

#### 証明書の生成

*getting-start*フォルダ内の以下のコマンドを実行して必要な証明書を生成してください:

mkcert -cert-file traefik\\certs\\xp0cm.localhost.crt -key-file traefik\\certs\\xp0cm.localhost.key "xp0cm.localhost"
mkcert -cert-file traefik\\certs\\xp0id.localhost.crt -key-file traefik\\certs\\xp0id.localhost.key "xp0id.localhost"

### Windows Hostsファイルのエントリを追加

Windows hostsファイルにxp0cm.localhostとxp0id.localhostホスト名を追加し、ループバックIPアドレス127.0.0.1を指すことができます。

127.0.0.1 xp0cm.localhost
127.0.0.1 xp0id.localhost

あるいは、*SitecoreDockerTools*のAdd-HostsEntryコマンドレットを使うこともできます:

Add-HostsEntry "xp0cm.localhost"
Add-HostsEntry "xp0id.localhost"

## Sitecoreを起動

Sitecoreを始めるには:

-   Composeファイルと同じフォルダ内で以下のコマンドを実行してください:
    
    docker compose up -d
    

このコマンドは以下の通りです:

-   Sitecoreコンテナレジストリから必要なすべてのイメージをダウンロードします。
-   デフォルトのネットワークを作成します。
-   構成された各サービスごとにコンテナを作成します。
-   コンテナは設定されたエントリーポイントからスタートします。

> !注 \-d (*切り離したモード*)は、Dockerにバックグラウンドでコンテナを起動し、そのまま実行させておくよう指示します。これを省略すると、コンテナログが出力にストリーミングされ、プロンプトに戻るにはCtrl\`\`+Cと入力する必要があります。これを行うとコンテナも停止し、削除されます。
> 
> このガイドで使われる他の一般的なコマンドの簡単な参照については、[Sitecore Dockerチートシート](https://doc.sitecore.com/xp/ja/developers/101/developer-tools/sitecore-docker-cheat-sheet.html "Sitecore Docker cheat sheet")をご覧ください。

## ランニングコンテナを見る

作成したコンテナを見るには:

-   docker psコマンドを実行してください:
    
    docker ps
    

この場合は、状態が*Up*で示されたすべての稼働中のコンテナのリストが表示されます。また、コンテナID、使用されている画像、コンテナが露出しているポートも確認できます。

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
75684e9146f2 traefik:v2.2.0-windowsservercore-1809 "/traefik --ping --a…" 7 seconds ago Up 3 seconds (healthy: starting) 80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8079->8080/tcp sitecore-xp0\_traefik\_1
67be2b1350e1 scr.sitecore.com/sxp/sitecore-xp0-cm:10.1.0-ltsc2019 "C:\\\\LogMonitor\\\\LogMo…" 21 seconds ago Up 11 seconds (healthy) 80/tcp sitecore-xp0\_cm\_1
e553b6ab0fb5 scr.sitecore.com/sxp/sitecore-xp0-cortexprocessingworker:10.1.0-ltsc2019 "C:\\\\LogMonitor\\\\LogMo…" 21 seconds ago Up 11 seconds (healthy) sitecore-xp0\_cortexprocessingworker\_1
8d40d14da8a2 scr.sitecore.com/sxp/sitecore-xp0-xdbautomationworker:10.1.0-ltsc2019 "C:\\\\LogMonitor\\\\LogMo…" 21 seconds ago Up 12 seconds (healthy) sitecore-xp0\_xdbautomationworker\_1
b4279d4f6de7 scr.sitecore.com/sxp/sitecore-id:10.1.0-ltsc2019 "C:\\\\LogMonitor\\\\LogMo…" 27 seconds ago Up 21 seconds (healthy) 80/tcp sitecore-xp0\_id\_1
41418243fd0d scr.sitecore.com/sxp/sitecore-xp0-xdbsearchworker:10.1.0-ltsc2019 "C:\\\\LogMonitor\\\\LogMo…" 27 seconds ago Up 20 seconds (healthy) sitecore-xp0\_xdbsearchworker\_1
6f4e64033031 scr.sitecore.com/sxp/sitecore-xp0-xconnect:10.1.0-ltsc2019 "C:\\\\LogMonitor\\\\LogMo…" 27 seconds ago Up 21 seconds (healthy) 0.0.0.0:8081->80/tcp sitecore-xp0\_xconnect\_1
33931b923acb scr.sitecore.com/sxp/sitecore-xp0-mssql:10.1.0-ltsc2019 "powershell -Command…" About a minute ago Up 56 seconds (healthy) 0.0.0.0:14330->1433/tcp sitecore-xp0\_mssql\_1
3b362d8ed9a6 scr.sitecore.com/sxp/sitecore-xp0-solr:10.1.0-ltsc2019 "powershell -Command…" About a minute ago Up 56 seconds 0.0.0.0:8984->8983/tcp sitecore-xp0\_solr\_1

一部のステータスが(health: starting)になっていることに気づくかもしれません。これは、設定されたヘルスチェックに合わせるためにまだウォームアップ中であることを意味します(docker-compose.ymlファイルのhealthcheck参照)。docker psコマンドを再度実行すると、最終的にはすべてが(healthy)に変わるのが見えます。

## アクセスSitecoreコンテナ

リバースプロキシがサービスを提供するコンテナには、設定されたホスト名(例 [:https://xp0cm.localhost](https://xp0cm.localhost))を使ってHTTPSプロトコルでアクセスします。

他の公開コンテナは特定のポートを使用するよう事前に設定されています(docker-compose.ymlファイルのportsを参照)。WindowsのDocker Desktopのデフォルト設定では、これらのポートにはlocalhostでアクセスできます。

つまり、*Sitecore Experience Platform - Single(XP0)* コンテナに以下のようにアクセスできます:

-   Sitecore Content Management(cm): [https://xp0cm.localhost](https://xp0cm.localhost)
-   Sitecore アイデンティティサーバー(id): [https://xp0id.localhost](https://xp0id.localhost)
-   Sitecore xConnect サーバー(xconnect): [http://localhost:8081](http://localhost:8081)
-   アパッチ・ソル(solr): [http://localhost:8984](http://localhost:8984)
-   Microsoft SQL Server (mssql): localhost,14330
-   トラエフィク: [http://localhost:8079](http://localhost:8079)

### SQL Serverへの接続について

ポートを使ってSQL Serverに接続すると、構文が少し異なります。前述のようにコロン(:))ではなく、カンマ(,)を使う必要があります。認証SQL Serverは*、SA*アカウントと.envファイルで指定したSQL\_SA\_PASSWORD値(init.ps1ファイルではデフォルトでPassword12345)を使って接続できます:

![The Connect to Server dialog.](https://doc.sitecore.com/api/markdown-image/xp/ja/developers/101/developer-tools/images/SSMS-Connection.png)

## スキーマのポピュレートとインデックスの更新

Sitecoreコンテナ環境には、起動時に動作し、必要なコアをSolrコンテナに生成し(もし存在していなければ)、そして終了するsolr-initコンテナが含まれています。これが期待される動作です。

ただし、このコンテナはSolr管理スキーマや再構築インデックスを埋めることはできません。手動またはカスタムスクリプトで行う必要があります。これをしないと、コンテナログでSolr関連のエラーを確認できます。

管理スキーマとインデックスの更新を埋めるために:

1.  Sitecoreにログインして admin。
2.  **コントロールパネル**を開き、すべての検索インデックスの[管理スキーマを入力](https://doc.sitecore.com/xp/en/developers/101/platform-administration-and-architecture/solr-managed-schemas.html)してください。
3.  **コントロールパネル**にいる間に[検索インデックスを再構築](https://doc.sitecore.com/xp/en/developers/101/platform-administration-and-architecture/rebuild-search-indexes.html)してください。

## 自分の事例を検証してください

あなたの例を検証するために:

1.  [https://xp0cm.localhost](https://xp0cm.localhost)でSitecoreデフォルトのウェブサイトをご覧ください。
    
2.  [https://xp0cm.localhost/sitecore](https://xp0cm.localhost/sitecore)を閲覧して、Sitecoreにログインできるか確認してください。**ユーザー名**はadmin、**パスワード**は.envファイル(init.ps1ファイルではデフォルトでPassword12345)で設定したSITECORE\_ADMIN\_PASSWORDの値を使います。
    
3.  以下のコマンドでログを確認し、すべてのコンテナからのログを確認してください:
    
    docker compose logs -f --tail 20
    
    \-f(または\--follow)オプションはDockerに出力をストリーミングするよう指示し、\--tailオプションは各コンテナの最後の20行に初期ログ出力を制限します。ログはコンテナの前置き辞で付けられているのがわかります。
    
4.  終わったらCtrl+Cと入力してプロンプトに戻ってください。
    

## Sitecoreを止めろ

Sitecoreインスタンスを停止するには:

-   次のコマンドを実行します:
    
    docker compose stop
    
    これで容器は止まりますが、取り外されるわけではありません。その後、容器をdocker compose startで再開できます。
    
-   容器を止めて取り出す方法:
    
    docker compose down
    
    これによりコンテナは停止しますが、同時にコンテナや作成されたネットワークも削除されます。
    
-   容器を停止・削除し、画像も削除するには:
    
    \--rmi <all/local>を加えます。
    

開発ワークフローはこれらのコマンドの組み合わせを含みます。コマンドはトポロジーによりますが比較的速いです。

## 永続的なストレージのクリーンアップ

現在、*mssql-data*と*solr-data*フォルダにファイルがあります。 *traefik*フォルダと同様に、これらはComposeファイル内の [ボリューム](https://docs.docker.com/storage/volumes/) としてマウントされたフォルダです。これらはdocker-compose.ymlファイル内で設定されています:

mssql:
 ...
 volumes:
 - type: bind
 source: .\\mssql-data
 target: c:\\data
solr:
 ...
 volumes:
 - type: bind
 source: .\\solr-data
 target: c:\\data

フォルダは*mssql*サービスのデータベースファイルと*solr*サービスのインデックスファイルの永続保存として使われます。つまり、docker compose downコマンドを行ってもデータベースとインデックスデータはそのまま残ります。

ただし、Sitecoreの管理者パスワードを変更する場合など、新たにやり直したい場合や、古いデータのためにクリアが必要な場合もあります。

これらのフォルダ内のファイルは手動で削除することもできますし、clean.ps1スクリプトを使うこともできます。

ファイルを削除するには:

1.  *getting-startフォルダ*でPowerShell管理者プロンプトを開きます。
    
2.  次のコマンドを実行します:
    
    .\\clean.ps1

## さらなる参考文献

-   [https://docs.docker.com/compose](https://docs.docker.com/compose)
-   [https://docs.docker.com/docker-for-windows/networking/](https://docs.docker.com/docker-for-windows/networking/)