Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Windowsで、docker compose のエイリアスを設定できません😢

解決したいこと

windowsで、エイリアスを設定しています。
Git コマンドと docker compose コマンドのエイリアスを設定しました。
Git コマンドのエイリアスは問題なく実行できますが、docker compose コマンドのエイリアスは、エラー文がでて実行できません。(下記です。)
解決策を教えていただけないでしょうか。

発生している問題・エラー

PS C:\Users\user\ディレクトリ名> dc                  
dc: The term 'docker compose' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

該当するソースコード

PS C:\Users\user\ディレクトリ名> dc                  

自分で試したこと

  • プロファイルファイルでパスを通しました。
$env:Path += ";C:\Program Files\Docker\Docker\resources\bin"

プロファイルファイルの内容です。

# Self Added Path(PowerShellにパスを追加)

$env:Path += ";C:\Program Files (x86)\GnuWin32\bin"
$env:Path += ";C:\Program Files\Docker\Docker\resources\bin"

# Self Added Alias(エイリアスを追加)
# エイリアスを追加後に、実行するコマンド -> . $PROFILE
# エイリアスを取得 -> Get-Alias エイリアス名

# Set-Alias エイリアス名 '実行したいコマンド'

# Docker alias
Set-Alias dc 'docker compose'

# Git alias
Set-Alias g 'git'
Set-Alias gs 'git status'
Set-Alias gb 'git branch'
Set-Alias ga 'git add'
Set-Alias gc_m 'git commit -m'
# Set-Alias gp 'git push'

# function

パスは通っているようです。

PS C:\Users\user\docker-laravel-win> $env:path       
C:\Program Files\PowerShell\7;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Program Files\PowerShell\7\;
C:\ProgramFiles\Docker\Docker\resources\bin
Files\mingw64\bin;C:\Users\user\AppData\Roaming\npm;C:\Program Files (x86)\GnuWin32\bin;;C:\Program Files (x86)\GnuWin32\bin;C:\Program Files\Docker\Docker\resources\bin
~

where コマンドでdockerファイルを探してもいっこうに見つかりません。

PS C:\Users\user> where docker-compose
PS C:\Users\user> where docker
//-> 何も表示されません。

docker compose コマンドは使用できます。しかし、dc(エイリアス)は実行できません。

PS C:\Users\user\ディレクトリ名> docker compose      

Usage:  docker compose [OPTIONS] COMMAND
0

1Answer

alias はエラーメッセージにもあるようにコマンドレット/関数/スクリプト/実行ファイル等に対する別名なので、docker compose という二つのワードの組み合わせに対応できません。

エイリアスではなく、以下のように関数として登録すれば良いと思います。

function dc() {
  docker compose $args
}
2Like

Comments

  1. @tomo114883

    Questioner

    ご回答ありがとうございます!

    複数単語のコマンドは関数にする必要があるんですね。確かにエイリアスには単一単語のコマンドしか登録されていませんでした。単一単語のコマンドはエイリアスで、複数単語のコマンドは関数で登録します!

    無事に解決いたしました!ありがとうございます!

Your answer might help someone💌