すべてのプロダクト
Search
ドキュメントセンター

Serverless App Engine:イメージ作成の例

最終更新日:Jul 16, 2025

SAE アプリケーションイメージの作成は、通常イメージの作成と同じです。慣れていない場合は、このトピックで提供されている例を参照してください。

  1. お使いの環境に Docker がインストールされ、実行されていることを確認します。docker --version で確認してください。

  2. プロジェクトディレクトリに移動し、Dockerfile を作成します。さまざまなプログラミング言語の Dockerfile の例を次に示します。

    Java

    ディレクトリ構造は次のとおりです。

    .
    ├── Dockerfile # 新しく作成された Dockerfile
    ├── target
    │   ├── my-app.jar # プロジェクトのビルド時に生成された JAR パッケージ
    ├── src # イメージのビルドには、Dockerfile と jar パッケージのみが含まれ、ソースコードやその他の構成ファイルは含まれません。
    │   ├── ...
    ├── pom.xml

    Dockerfile の内容は次のとおりです。

    # ベースイメージを指定します。ここでは openjdk 8 を例として使用します
    FROM openjdk:8-jdk-alpine
    
    # ローカルの jar パッケージをイメージにコピーします
    COPY ./target/my-app.jar /
    
    # 起動コマンドを設定します
    ENTRYPOINT ["java", "-jar", "/my-app.jar"]

    PHP

    ディレクトリ構造は次のとおりです。

    .
    ├── Dockerfile # 新しく作成された Dockerfile
    ├── entrypoint.sh # 新しく作成されたコンテナ起動スクリプト
    ├── php
    │   ├── index.php
    │   └── phpinfo.php
    ├── nginx
    │   ├── nginx.conf
    │   ├── conf.d
    │   |   ├── default.conf
    │   ├── fastcgi_params
    │   ├── ...

    Dockerfile の内容は次のとおりです。

    # ベースイメージを指定します。ここでは PHP-FPM イメージを例として使用します
    FROM php:8.2-fpm-alpine
    
    # Nginx をインストールします
    RUN apk add --no-cache nginx
    
    # Nginx 構成ファイルをコンテナにコピーします
    COPY nginx/ /etc/nginx/
    
    # PHP ファイルを作業ディレクトリにコピーします
    COPY php/ /var/www/html/
    
    # ローカルの起動スクリプトをイメージにコピーします。これはコンテナの起動時に実行されます
    COPY entrypoint.sh /entrypoint.sh
    RUN chmod +x /entrypoint.sh
    ENTRYPOINT ["/entrypoint.sh"]
    

    起動スクリプト entrypoint.sh の内容は次のとおりです。

    #!/bin/sh
    
    # PHP-FPM をバックグラウンドで起動します
    php-fpm -D
    
    # PHP-FPM が正常に起動したかどうかを確認します
    if ! pgrep "php-fpm" >/dev/null
    then
        echo "PHP-FPM failed to start!"  // PHP-FPM の起動に失敗しました!
        exit 1
    fi
    
    # Nginx をフォアグラウンドで実行します
    nginx -g "daemon off;"

    Python

    ディレクトリ構造は次のとおりです。

    .
    ├── Dockerfile # 新しく作成された Dockerfile
    ├── entrypoint.sh # 新しく作成されたコンテナ起動スクリプト
    ├── my_app
    │   ├── requirements.txt
    │   ├── main.py
    │   ├── my_package
    │   |   ├── __init__.py
    │   |   ├── ...

    Dockerfile の内容は次のとおりです。

    # ベースイメージを指定します。ここでは Python 3.9 イメージを例として使用します
    FROM python:3.9
    
    # ローカルの Python コードをイメージにコピーします
    RUN mkdir -p /my_app
    COPY my_app/ /my_app/
    
    # requirements.txt に従ってイメージに依存関係をインストールします
    RUN pip install -r /my_app/requirements.txt
    
    # ローカルの起動スクリプトをイメージにコピーします。これはコンテナの起動時に実行されます
    COPY entrypoint.sh /entrypoint.sh
    RUN chmod +x /entrypoint.sh
    ENTRYPOINT ["/entrypoint.sh"]
    

    起動スクリプト entrypoint.sh の内容は次のとおりです。

    #!/bin/sh
    
    # この例では、Gunicorn を使用して my_app/main.py のアプリを起動します。app は Flask インスタンスです。Flask と Gunicorn は requirements.txt で指定されています。
    gunicorn -w 3 -b 0.0.0.0:8080 my_app.main:app

    Node.js

    Nginx でデプロイされたフロントエンドプロジェクトのディレクトリ構造は次のとおりです。

    .
    |- Dockerfile # 新しく作成された Dockerfile
    |- nginx-conf # Nginx 構成ファイルのディレクトリ
    |  |- nginx.conf
    |  |- conf.d
    |  |  |- default.conf
    |  |- ...
    |- package.json
    |- src
    |  |- ...
    |- dist # プロジェクトビルド後に生成される静的リソースファイルのディレクトリ
    |  |- index.html
    |  |- static
    |  |  |- ...

    Dockerfile の内容は次のとおりです。

    # ベースイメージを指定します
    FROM nginx:1.22
    
    # ローカルの静的リソースファイルをコンテナ環境の指定されたパスにコピーします
    COPY ./dist /usr/share/nginx/html/
    
    # ローカルの Nginx 構成ファイルをコンテナ環境の指定されたパスにコピーします
    COPY ./nginx-conf /etc/nginx/
    
    # ベースイメージの起動コマンドを使用します。追加の設定は必要ありません
  3. イメージをビルドします。docker build -t <イメージ名>:<イメージタグ> . (例:docker build -t my-app:1.0 .

  4. イメージをイメージリポジトリにプッシュします。既存のイメージリポジトリが要件を満たしていない場合は、Alibaba Cloud Container Registry ACR Personal Edition または ACR Enterprise Edition を使用します。

  5. イメージリポジトリの種類に基づいて、同じアカウントの ACR インスタンスのイメージを使用してアプリケーションをデプロイする異なるアカウントの ACR インスタンスのイメージを使用してアプリケーションをデプロイする、または ACR 以外のインスタンスのイメージを使用してアプリケーションをデプロイする から選択します。