LoginSignup
6
2

More than 3 years have passed since last update.

GitHub ActionsでLaravelアプリを本番環境に自動デプロイする 〜Docker準備編〜

Last updated at Posted at 2020-05-04

Laravelの本番デプロイ手順って複雑じゃないですか?
というわけでGitHub Actionsで自動デプロイしてみます。

今回は、まず必要になるDockerについてです。

なぜDockerが必要なの?

GitHub Actionsの中で任意バージョンのphpやcomposer、npmコマンドなどを実行するために必要になります。
ローカルでの開発や、コンテナでの本番運用にも転用可能なので、使えるようにしておきましょう。

Docker環境既にあるぜ!って人やLaradockなどのDockerHubにあるImageを使う人には今回の記事は必要ありません。
次回作にご期待ください。

Dockerfileを作る

  • php
  • composer
  • nodejs

の3つを使えるImageを作成します。

以下ではamazonlinux2とphp-fpm環境を例示していますが、上の3つが使えればphpイメージベースなど、何でも良いです。バージョンも適宜読み替えてください。

FROM amazonlinux:latest

RUN amazon-linux-extras enable php7.4 epel

RUN yum install -y \
    epel-release \
    https://rpm.nodesource.com/pub_12.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm \
  && \
  yum install -y \
    composer \
    libaio \
    nodejs \
    php \
    php-fpm \
    php-gd \
    php-mbstring \
    php-redis \
    php-xml \
    php-xmlrpc \
    unzip \
  && \
  yum clean all

# 以下の設定でconf書き換え
# user = root
# group = root
# listen = 9000
COPY www.conf /etc/php-fpm.d/www.conf

WORKDIR /var/www/app

STOPSIGNAL SIGQUIT

EXPOSE 9000
CMD ["php-fpm", "-F", "--allow-to-run-as-root"]

Docker imageをbuildしてGitHub Packagesにpushする

Configuring Docker for use with GitHub Packages も参照してください

# イメージのビルド
docker build . -t docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION

# Github自アカウントの個人トークンでGithub Packagesの認証
cat ~/TOKEN.txt | docker login docker.pkg.github.com -u USERNAME --password-stdin

# Github PackagesにImageをpush
docker push docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION

REPOSITORYはどこでも構いませんが、Github Actionsで使うならActionsを実行するrepoにpushするとworkflow内での認証が要らなくなるのでおすすめです。

docker-compose.ymlを作る

version: "3.7"
services:
  app:
    image: docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION
    ports:
      - "9000:9000"
    volumes:
      - .:/var/www/app

php, composer, nodejs, npmが動くかテスト

docker-compose run app php -v
docker-compose run app composer -v
docker-compose run app node -v
docker-compose run app npm -v

これでLaravelをDockerで動かす準備ができました。

次回はこのdocker-composeを使ってGithub Actionsのワークフローを作成したいと思います。

6
2
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
6
2