前提
当方、Docker初心者のため至らないところがありましたら申し訳ございません。
レガシーシステムをローカルでデバッグする必要があり、環境構築しようとしております。
以前サーバーがダウンしてた際に、プライベートレジストリが復旧していなかったため現状環境構築ができないことが判明いたしました。
昔からいらっしゃった方もプライベートレジストリに何があったのかわからないようで、こちらの方で修正を任されることになりました。
プライベートレジストリでは、イメージを置いていただけだと思うので、こちらでイメージを用意してあげればうまくいくと思っていた次第です。
しかし、ビルドがうまくいかないので有識者の方にご教授いただけたら幸いです。
また、初めての質問でテンプレート通りで申し訳ございません。
・M1 Macを使用しております。
・名前を変更しているところがあります。
・DockerfileのFromのところをプライベートレジストリにしておりました。
・情報が足りない場合は補足いたします。
実現したいこと
コンテナの作成まではできていますので、STATUSをRunning状態にしたい。
発生している問題・エラーメッセージ
コンテナのSTATUSがExited(1)になってしまう。
(restart: alwaysのコメントアウトを外しますとコンテナが無限に再起動いたします。)
docker logではechoした"Running Web Server"とSuccessが出るが他に出てこないので手詰まりです…
apacheが起動していないのかなと思っております、、
該当のソースコード
docker-compose.yml
※db-master,db-slave,wiremockは正常に動いているため、割愛しております。
yml
1version: '3' 2 3services: 4 db-master: 5 db-slave: 6 wiremock: 7 8 web: 9 platform: linux/x86_64 10 container_name: webapp 11 hostname: web-server 12 build: ./web 13 ports: 14 - "80:80" 15 volumes: 16 - "./web/app:/app:z" 17 - "./web/test:/test:z" 18 - "./web/cmd.sh:/cmd.sh:z" 19 links: 20 - db-master 21 - db-slave 22 - wiremock 23 depends_on: 24 - db-master 25 - db-slave 26 - wiremock 27 # restart: always 28 networks: 29 - default 30 31networks: 32 default: 33
Dockerfile
1FROM centos 2 3WORKDIR /app 4COPY app /app 5COPY test /test 6COPY opt/projectr /opt/projectr 7COPY cmd.sh / 8COPY httpd.conf /etc/httpd/conf.d/httpd.conf 9 10RUN find /opt/projectr/ \( -name '*.jpg' -o -name '*.png' \) | xargs touch -d "2018/10/01 01:00:00" 11 12RUN mkdir /var/log/pjt && \ 13 chmod 777 /var/log/pjt 14 15CMD ["/cmd.sh"]
cmd.sh
sh
1#!/bin/bash 2set -e 3 4if [ "$env" = "test" ]; then 5 echo "Running Unit Tests" 6 exec phpunit --colors=always --verbose --test-suffix=Test.php --configuration "/test/phpunit.xml" "/test/" 7else 8 echo "Running Web Server" 9 touch /usr/sbin/apachectl 10 chmod 777 /usr/sbin/apachectl 11 exec /usr/sbin/apachectl -D FOREGROUND 12fi
試したこと
cmd.shで行っていたことをDockerfile内で行う
Dockerfile
1FROM centos 2 3WORKDIR /app 4COPY app /app 5COPY test /test 6COPY opt/projectr /opt/projectr 7COPY cmd.sh / 8COPY httpd.conf /etc/httpd/conf.d/httpd.conf 9 10RUN find /opt/projectr/ \( -name '*.jpg' -o -name '*.png' \) | xargs touch -d "2018/10/01 01:00:00" 11 12RUN mkdir /var/log/pjt && \ 13 chmod 777 /var/log/pjt 14 15RUN touch /usr/sbin/apachectl 16RUN chmod 777 /usr/sbin/apachectl 17 18CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
結果:exec /usr/sbin/apachectl: exec format error
だめでした、、
docker-compose.ymlの環境が違うのかな?
(linux/x86_64のところです。amdやarmでもだめっぽい)
補足情報(FW/ツールのバージョンなど)
環境
M1 Macbook Pro
VScode
回答1件
あなたの回答
tips
プレビュー