kstm-su / ictsc_2020_kstm

0 stars 0 forks source link

なぜか動きません! #14

Closed Noiri closed 3 years ago

Noiri commented 3 years ago

概要 あなたは研修グループに所属にしているエンジニア兼先生です。 研修にて、サーバー上でDockerを用いてサービスを構築する研修課題を出題しました。 課題はDocker Compose を使って複数のイメージを起動してみる。という課題でした。ある一人の受講生がエラーが発生し、解決できないと相談しにきました。 エラーを解消し起動を行いなさい。

前提条件 サーバーのルール:Dockerイメージは公式イメージのみ Docker Hubのサインインはしない

課題 次回,使用するためにWebサーバーとdbをdocker-compose.ymlとDockerfileを使って構築しましょう. WebサーバーはNGINX,データベースはMariaDBを使用してください. 初期状態 /home/user/homework01に課題で使用したdocker-compose.ymlとDockerfileが保存されている $ docker-compose up -d に失敗する 終了状態 課題の条件を達成する $ docker-compose up -dが成功する 解答提出時にエラーが発生した原因を記述する トポロジー

kitakou0313 commented 3 years ago

初期のerror

user@vm:~/homework01$ docker-compose up -d
Building db
ERROR: Dockerfile parse error line 1: unknown instruction: FROM MARIADB@SHA256:EACAB2A85F2692A71BBECEC0EC1D4EAB0A813409BC4760B2D15269B05AA2BAFB
user@vm:~/homework01$ cat docker-compose.yml
version: '3'
services:
    nginx:
            image: nginx@sha256:8789e3c472689faa3849023e5272e887982f0714a9e3c89e4786b8cf614db2cf
    db:
            build: ./
user@vm:~/homework01$ cat Dockerfile
FROM mariadb@sha256:eacab2a85f2692a71bbecec0ec1d4eab0a813409bc4760b2d15269b05aa2bafb
user@vm:~/homework01$
koba1t commented 3 years ago

お世話になっております。kstm(かすたむ)です。

今回の原因はDockerfileに全角スペースが入っていることが原因でした。

FROM mariadb@sha256:eacab2a85f2692a71bbecec0ec1d4eab0a813409bc4760b2d15269b05aa2bafb

FROMの後ろに存在した全角スペースを半角スペースに変更した所、docker-composeは正常に起動しました

しかしdockerイメージがarmアーキテクチャの物だったため、コンテナが起動後にエラーで終了していました。 x86_64のコンテナイメージをdockerhubから取得しようとした所pullのrate limitの制限によりpullできなかったため、 手元でdockerhubからpullしたイメージをghcr.ioに一度pushし、pullすることで正しいコンテナイメージを取得しました。

これにより正常に起動するようになりました。

ただmariadbはpassword関連の環境変数を設定しなければ終了してしまうので、以下のようにdocker-compose.yamlを編集しました

version: '3'
services:
        nginx:
                image: nginx@sha256:d7038eae37cfa36cd8e286f6d6daf0df7a445a2da327517b3cde4ba1833adc0c
        db:
                build: ./
                environment:
                        - MYSQL_ROOT_PASSWORD=ictsc