Docker
hacklang
HHVM

DockerでHHVM/Hackを始める


 概要

この記事はHack and HHVM Advent Calendar 2018の23日目の記事になります。

連日@ytakeさんが、素晴らしい記事を上げてくれていますね。

今回はHHVMとHackについて興味がある自分が、Dockerで環境を作る話をしていこうと思います。

アドベントカレンダーの機会に入門していこうと思います。


環境構築

公式でDocker環境構築の手順があるので、それを参考にやってみます。

$ docker pull hhvm/hhvm

$ docker run --tty --interactive hhvm/hhvm:latest /bin/bash -l
# hhvm --version
HipHop VM 3.28.3 (rel)
Compiler: 1538421562_619401197
Repo schema: f2bcece3956424d62c386558e0a8e48a1de8e0b1

次にproxygenで立ち上げてみます。

こちらも公式に手順があるので、その通りに進めていきます。


Dockerfile

FROM hhvm/hhvm-proxygen:latest

RUN rm -rf /var/www
ADD . /var/www

EXPOSE 80



index.hh

<?hh // strict

echo "Hello World";

docker build .

docker run -p 0.0.0.0:80:80 コンテナID

この状態でブラウザにアクセスすると、Hello Worldが表示されます。

スクリーンショット 2018-12-19 15.53.12.png


最後に

とまあ、「公式ドキュメントをやっただじゃん」みたいなエントリーになりましたが、ここに辿り着くまでにも結構時間がかかったんですよね…。

HHVM/Hackに関しては、検索してもなかなかいい記事が見つからないですし、自分はDockerの知識もなく…。

HHVM/Hackに関しては、詰まったときは公式ドキュメントを読むのと、@ytakeさんの投稿を見るのが良いです。


おまけ

HackでもComposerを使って、ライブラリのインストールを行います。

自分のPCにHHVMとComposerを入れてしまっても良いですが、個人的に気になるので、Dockerでインストールします。

こちらは困っていた際に、導入方法に迷っていた際に@ytakeさんから助けてもらい、導入することができました。

ありがとうございました!

Dockerfileを下記のように変更します。


Dockerfile

FROM hhvm/hhvm-proxygen:latest

RUN rm -rf /var/www \
&& cd '/' \
&& php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php composer-setup.php \
&& php -r "unlink('composer-setup.php');" \
&& mv composer.phar /usr/local/bin/composer
ADD . /var/www

EXPOSE 80


これでOKです。

あとはコンテナをビルドし、sshで確認します。

$ docker build .

$ docker run --tty --interactive -v ホストディレクトリの絶対パス:/var/www/html コンテナID /bin/bash -l
# hhvm $(which composer)
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.8.0 2018-12-03 10:31:16

これでホストディレクトリに対して、Composerを使ったライブラリのインストールが出来るようになりました。

以上で終わります。

最後まで読んでいただきありがとうございました。


参考