ec-cube
ec-cube copied to clipboard
ローカルでビルドしたdocker imageを利用すると起動できない
概要(Overview)
docker-compose.ymlのコメントとして記載されているdocker buildを利用してイメージを作成したのち、docker-compose up -dすると、ec-cubeコンテナが異常終了してしまう
error logとして exec /usr/local/bin/docker-php-entrypoint: no such file or directory と表示される
再現手順(Procedure)
- ec-cubeリポジトリをcloneしディレクトリ内へ移動
- docker build -t ec-cube --no-cache --pull --build-arg TAG=8.1-apache を実行
- docker tag ec-cube ghcr.io/ec-cube/ec-cube-php:8.1-apacheを実行
- docker-compose up -dを実行(ec-cubeコンテナが異常終了する)
ec-cubeイメージのエントリーポイントを/bin/bashに指定してコンテナを起動し以下の確認を実施
- /usr/local/bin/docker-php-entrypointファイルの確認(存在する)
- /usr/local/bin/docker-php-entrypointの実行(エラーとなる /bin/sh: 5: /usr/local/bin/docker-php-entrypoint: not found)
- composerの実行(コマンド一覧が表示される)
- bin/consoleの実行(エラーとなる /usr/bin/env: 'php\r': No such file or directory)
環境(Environment)
EC-CUBE 4.3ブランチ、4.2ブランチの二つを試した dockerはWindowsで実行(Windows10, 11共現象を確認)
引き続き調査したところ、shebang行にWindows改行が利用されていると認識できないようです
Windowsでbuildする場合、コンテナ内にCOPYするコマンド系のスクリプトは、改行を変換する必要があるようです https://willi.am/blog/2016/08/11/docker-for-windows-dealing-with-windows-line-endings/
作法をあまり理解できていないですので、何か問題があればご指摘いただければありがたいです https://github.com/EC-CUBE/ec-cube/pull/6127
@Meganezaru Window 環境では WSL2 のご利用を強くおすすめします。 PHPとDockerとNTFSの相性が強烈に悪いことと、積極的に利用するユーザーが少ないため、あまり保守されていません。 WSL2 を利用できない要件などありましたらご教授ください🙇♂️
@nanasess しいて言えばDocker desktopを利用したいという事がありますが、できない要件は特にないと思いますので、WSL2での開発を考えてみます。アドバイスありがとうございます。
@Meganezaru WSL2経由でも Docker Desktop を利用可能ですので、こちらもご検討ください🙇♂️ https://docs.docker.jp/desktop/windows/wsl.html
@nanasess いろいろ情報ありがとうございます。助かります🙇♂️
現象として致命的に感じるものが処置されていないことに、とても違和感があったのですが、 常識的にWSL2上で作業することが分かり納得しました。
Docker Desktopと同じようにVSCodeなども同じような利用方法がきっと有るんでしょうね。 いままでWindowsを開発環境として使ってこなかったので、勉強になります、ありがとうございました。
私と同じように改行周りで問題が出るというセンスがない人は、同じようなハマり方をしてコンテナ利用を断念する人がいるように感じます。何か示唆できるとよいかもしれません。
PRに続き、こちらもクローズさせて頂きます。