LoginSignup
0
0

More than 3 years have passed since last update.

Herokuのコンテナ を利用してデプロイしたけどエラーになったOTL

Last updated at Posted at 2020-05-04

HerokuのContainer Registryを利用してデプロイしたけど、エラーになった

デプロイ環境で安くできる環境探してたら、Herokuがコンテナを利用してデプロイできることを知ったので利用してみることに!
ローカル環境もdockerを利用していたので、めっちゃ便利と思いデプロイしたけどなんかエラーになった。。。。
いつかのためにメモしておきます。。。。
というかTeratailにも質問したけど知っている人がいなかったので、知っている方がいれば教えて欲しいです笑

エラー内容

apacheが起動できないというエラーが出てしまう。。。

AH00543: httpd: bad user name apache

なんで???ローカルではapacheユーザー存在してたんだが、、、、
コンテナのメリットってdockerが利用できればどこでも利用できるポータビリティ性のはずでは???
同じイメージを利用しているのになんか、環境に差が出てしまっているだが、、、(愚痴っぽくなってしまいました。すみません。)
確かにhttpd.confに以下を記述しているのでapacheユーザがないとエラーになるのはわかる

httpd.conf
User apache
Group apache

apacheユーザーがほんとにないのか確認

 cat /etc/passwd | grep apache

確かになかった。。。
それではグループは?

 cat /etc/group | grep apache

グループもない。
それじゃ作るかと思い、Dockerfile内を以下に変更

dockerfile

FROM alpine:3.10

## Packageインストール
RUN apk add --update --no-cache php7 php7-pdo_mysql php7-openssl php7-curl php7-json php7-mbstring \
    php7-apache2 php7-pdo_odbc php7-pdo_mysql php7-gd php7-pecl-apcu php7-mysqli php7-fpm php7-intl php7-phar php7-dom php7-xml php7-simplexml php7-tokenizer php7-xmlwriter php7-session apache2

COPY ./docker/app/php.ini /usr/local/lib/php.ini

## composerをインストール
COPY --from=composer /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /usr/bin/composer
ENV PATH $PATH:/composer/vendor/bin

COPY ./sample /var/www/html/sample/
WORKDIR /var/www/html/sample/
RUN composer install --no-interaction
RUN chmod -R a+w ./logs/error.log
COPY ./docker/app/httpd.conf /etc/apache2/httpd.conf

## apacheユーザー作成コマンドを追記
CMD adduser -S apache  

CMD ["httpd", "-D", "FOREGROUND"]

herokuにデプロイしてみた

herokuコンソール
State changed from crashed to starting
AH00543: httpd: bad user name apache

なんかエラー出ている
そしてまた、apacheユーザーが無いエラーも出ている

apacheユーザーは作成されていないらしい。。。。
なぜかというと、herokuではルートユーザーで実行されないのが原因らしい。
herokuではデプロイ先の環境にコマンドを実行できる画面があるが、そこで確認したらrootユーザーですか?的なエラーになった。

ちょっと他の方法でapacheを起動できないか模索中です。。。。

追記1

とりあえずの解決方法

問題点をまとめると
1. apacheを起動できない問題
2. apacheユーザーとapacheグループが存在しないかつユーザーを追加できない問題
3. ポート番号がheroku側は指定することができない

上記3点の問題があった、上記の問題を解決するための方法が以下になります。
今回の問題点はapacheユーザーがapacheを実行するという設定にしていたが原因であることでした。
herokuの側にデプロイするとapacheユーザーがなかった。ローカルでは存在していたため、気づかなかったが。
そして、heroku側でユーザーを追加することができないようです。
adduser apacheをDockerfileに記述しても、実行されないため、apache実行するユーザーを変更しないかぎり実行できないという。。。。
セキュリティ的にできないようになっているのか
そのため、apacheの実行ユーザーをhttpd.confのデフォルトのdoemonに変更することで、エラーを回避できた!
問題点3に関しては、解決してくださっていた先人がいたので、以下のリンク先の対応方法で解決できました!!
内容はランタイムの $PORT 環境変数をhttpd.confにsedコマンドで書き換えちゃうというもの。
Heroku で Apache HTTP Server コンテナをそのまま動かそうとすると crash するのを解決したメモ

所感

herokuのdocker利用してデプロイはちょっと考慮しないといけないことが多いのが不便、、、
実際apacheの実行ユーザーがdoemonで良いのかかなり疑問笑
趣味のものなので、問題無いので気にしないですが。
エラーに対応しながら書いた記事なので、まとまってないですが誰かの助けになれば嬉しいです。

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