0
0

WSL(AlmaLinux環境)でDocker Sail実行時の改行コード問題と解決策

Posted at

・参考サイト:

  1. https://laracasts.com/discuss/channels/laravel/laravel-sail-error-on-up-error-decoding-ports-invalid-hostport-8080
  2. https://vim.blue/vim-set-fileformat/
  3. https://emacsdocs.org/docs/emacs/File-Name-Coding

【これを書くに至った経緯】


Laravel Sailを立ち上げようとした際、以下のエラーメッセージが表示されました。

./.env: line 7: $'\r': command not found
./.env: line 11: $'\r': command not found
./.env: line 18: $'\r': command not found
./.env: line 25: $'\r': command not found
invalid hostPort: 8080
invalid hostPort: 8080

sail up が実行できず少々ハマったのでまとめてみました。



【結論から言うと】


エラー内容から、.env ファイル内の改行コードに問題があることが示唆されていました。具体的には $'\r' というエラーは、Windowsで使用される CRLF 改行コードの影響で発生していました。

WSL上のAlmaLinuxは、Linuxと同様に改行コードとして LF(ラインフィード)を期待します。しかし、Windowsではデフォルトで CRLF(キャリッジリターン + ラインフィード)が使用されているため、.env ファイルがWindows環境で作成された場合、Linux環境では余分な \r(キャリッジリターン)が含まれてしまいます。

その結果、Linux環境でシェルスクリプトや設定ファイルを読み込む際にエラーが発生します。WSLやDockerもこれに該当し、.env ファイルの改行コードが原因でエラーが発生していました。


【解決策】


この問題を解決するには、.env ファイルの改行コードを CRLF から LF に変更する必要があります。以下の手順で解決しました。

1. .env ファイルの改行コードを変更

Visual Studio Code (VSCode) での手順

  1. .env ファイルを VSCode で開きます。
  2. 画面右下に「CRLF」と表示されている箇所をクリックします。
  3. 表示されたオプションの中から「LF」を選択します。
  4. .env ファイルを保存します。


Vim での手順

  1. .env ファイルを Vim で開きます。
  2. 次のコマンドを実行して、改行コードを LF に変更します。
    :set fileformat=unix
    
  3. 以下のコマンドでファイルを保存し、Vimを終了します。
    :wq
    


Emacs での手順

  1. .env ファイルを Emacs で開きます。
  2. 次のコマンドを実行して、改行コードを LF に変更します。
    C-x RET f unix
    
  3. 以下のコマンドでファイルを保存します。
    C-x C-s
    


2. Sailの再起動

改行コードを変更した後、再度 sail up を実行します。これで、改行コードの変更が適用され、Linux環境でも .env ファイルが正しく認識されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0