SAE アプリケーションイメージの作成は、通常イメージの作成と同じです。慣れていない場合は、このトピックで提供されている例を参照してください。
お使いの環境に Docker がインストールされ、実行されていることを確認します。
docker --versionで確認してください。プロジェクトディレクトリに移動し、
Dockerfileを作成します。さまざまなプログラミング言語のDockerfileの例を次に示します。Java
ディレクトリ構造は次のとおりです。
. ├── Dockerfile # 新しく作成された Dockerfile ├── target │ ├── my-app.jar # プロジェクトのビルド時に生成された JAR パッケージ ├── src # イメージのビルドには、Dockerfile と jar パッケージのみが含まれ、ソースコードやその他の構成ファイルは含まれません。 │ ├── ... ├── pom.xmlDockerfile の内容は次のとおりです。
# ベースイメージを指定します。ここでは 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:appNode.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/ # ベースイメージの起動コマンドを使用します。追加の設定は必要ありませんイメージをビルドします。
docker build -t <イメージ名>:<イメージタグ> .(例:docker build -t my-app:1.0 .)イメージをイメージリポジトリにプッシュします。既存のイメージリポジトリが要件を満たしていない場合は、Alibaba Cloud Container Registry ACR Personal Edition または ACR Enterprise Edition を使用します。
イメージリポジトリの種類に基づいて、同じアカウントの ACR インスタンスのイメージを使用してアプリケーションをデプロイする、異なるアカウントの ACR インスタンスのイメージを使用してアプリケーションをデプロイする、または ACR 以外のインスタンスのイメージを使用してアプリケーションをデプロイする から選択します。