GCPのCloud Runというサービスのチュートリアルをやってみたので、メモを残します。
MacOSのインストール方法は、パッケージをダウンロードして、ユーザーのホームディレクトリ(/Users/{username}
)に展開する方法が推奨されているので、そのようにしました。
インストール時に
shell1./google-cloud-sdk/install.sh
を実行し、.zshrc
にgcloudコマンドのためのpathを追加しました。
その後、gcloud init
コマンドで初期化を行いました。
それでは本題。
Hello Worldと表示するPHPのファイル(index.php)を任意のプロジェクトルートに作成します。
php1<?php2$name = getenv('NAME', true) ?: 'World';3echo sprintf('Hello %s!', $name);
Hello 環境変数NAMEの値がなければ、デフォルト値としてworld
が$name
に入るというプログラムになっています。
dockerfile1# Use the official PHP image.2# https://hub.docker.com/_/php3FROM php:8.0-apache45# Configure PHP for Cloud Run.6# Precompile PHP code with opcache.7RUN docker-php-ext-install -j "$(nproc)" opcache8RUN set -ex; \9 { \10 echo "; Cloud Run enforces memory & timeouts"; \11 echo "memory_limit = -1"; \12 echo "max_execution_time = 0"; \13 echo "; File upload at Cloud Run network limit"; \14 echo "upload_max_filesize = 32M"; \15 echo "post_max_size = 32M"; \16 echo "; Configure Opcache for Containers"; \17 echo "opcache.enable = On"; \18 echo "opcache.validate_timestamps = Off"; \19 echo "; Configure Opcache Memory (Application-specific)"; \20 echo "opcache.memory_consumption = 32"; \21 } > "$PHP_INI_DIR/conf.d/cloud-run.ini"2223# Copy in custom code from the host machine.24WORKDIR /var/www/html25COPY . ./2627# Use the PORT environment variable in Apache configuration files.28# https://cloud.google.com/run/docs/reference/container-contract#port29RUN sed -i 's/80/${PORT}/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf3031# Configure PHP for development.32# Switch to the production php.ini for production operations.33# RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"34# https://github.com/docker-library/docs/blob/master/php/README.md#configuration35RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
php:8.0-apache
なので、PHP8系のイメージを使っています。
最後の行はPHPの本番環境の設定を適用するためにあります。
.dockerignore
ファイルを追加します
1# The .dockerignore file excludes files from the container build process.2#3# https://docs.docker.com/engine/reference/builder/#dockerignore-file45# Exclude locally vendored dependencies.6vendor/78# Exclude "build-time" ignore files.9.dockerignore10.gcloudignore1112# Exclude git history and configuration.13.gitignore
後は以下のコマンドでデプロイされます。
shell1gcloud run deploy
権限の有効化等を聞かれますのですべてyes
で答える必要がありました。