日々是好日

プログラミングについてのあれこれ、ムダ知識など

PowerShell スクリプトで docker run

マンガでわかるDockerに出てくる次のコマンドがちょっと長い。

docker run -d -p 80:80 --name myapp -v /c/users/[作業フォルダ]:/var/www/html php-vim

今は何度もコンテナ作っちゃ消してをやってるので、上記コマンドはソラでも書けるようになったけど、ちょっと経ったらたぶん忘れてしまう。
なので PowerShell スクリプトファイルにコマンド打ち込んでみました。作り方は上記コマンドをテキストファイルにコピペして拡張子を ps1 にしただけ。

ファイル名は docker_run.ps1 にでもしておきます。
PowerShellで実行してみると───

PS> .\docker_run.ps1 //← ".\" 付与で信頼済みスクリプトになる

.\docker_run.ps1 : このシステムではスクリプトの実行が無効になっているため、ファ
イル C:\users\hide1\dockerscripts\docker_run.ps1 を読み込むことができません。詳
細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?Lin
kID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\docker_run.ps1
+ ~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

怒られてしまいました。
PowerShell スクリプトは強力な機能なので、通常では実行不可になっているとのこと。

PowerShellスクリプトの作成と実行 CapmNetwork

実行可能状態にするため、実行ポリシーを変更します。
管理者権限で PowerShell を起動(アイコン右クリック→管理者として実行)し、次のコマンドレットを実行します。

PS> Get-ExecutionPolicy //実行ポリシーの確認
Restricted //←デフォルトだとたぶんこれ。スクリプト実行不可

PS> Set-ExecutionPolicy RemoteSigned
//継続するか確認されるのでY→Enter

PS> Get-ExecutionPolicy
RemoteSigned //←これが返ってくればOK

これでさっきの .\docker_run.ps1 を実行すれば大丈夫です。間違って docker_run.ps1 とすると怒られるので少し注意。

PS> .\docker_run.ps1

スクリプトに署名がされていればもしかしたら大丈夫かも?(未確認)

余談

スクリプト化したしよく変わるとこは引数にして~…まで考えて、それなら最初のコマンドでええやんってなってこの記事の意味があんまりなくなってしまった件ヾ(:3ノシヾ)ノシ