概要
jobs.<job_id>.container
を使用して、コンテナーを作成し、コンテナーをまだ指定していないジョブのステップを実行します。 スクリプトアクションとコンテナアクションの両方を使うステップがある場合、コンテナアクションは同じボリュームマウントを使用して、同じネットワーク上にある兄弟コンテナとして実行されます。
container
を設定しない場合、ステップがコンテナーで実行するように構成されたアクションを参照しない限り、すべてのステップは runs-on
で指定されたホスト上で直接実行されます。
注: コンテナー内の run
ステップの既定のシェルは、bash
ではなく sh
です。 これは、jobs.<job_id>.defaults.run
でも jobs.<job_id>.steps[*].shell
でもオーバーライドできます。
例: コンテナー内でジョブを実行する
name: CI on: push: branches: [ main ] jobs: container-test-job: runs-on: ubuntu-latest container: image: node:18 env: NODE_ENV: development ports: - 80 volumes: - my_docker_volume:/volume_mount options: --cpus 1 steps: - name: Check for dockerenv file run: (ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)
name: CI
on:
push:
branches: [ main ]
jobs:
container-test-job:
runs-on: ubuntu-latest
container:
image: node:18
env:
NODE_ENV: development
ports:
- 80
volumes:
- my_docker_volume:/volume_mount
options: --cpus 1
steps:
- name: Check for dockerenv file
run: (ls /.dockerenv && echo Found dockerenv) || (echo No dockerenv)
コンテナー イメージのみを指定する場合は、image
キーワードを省略できます。
jobs:
container-test-job:
runs-on: ubuntu-latest
container: node:18
コンテナー イメージを定義する
jobs.<job_id>.container.image
を使用して、アクションを実行するコンテナーとして使用する Docker イメージを定義します。 値には、Docker Hub イメージ名またはレジストリ名を指定できます。
コンテナー レジストリの資格情報を定義する
イメージのコンテナー レジストリでイメージをプルするための認証が必要な場合は、jobs.<job_id>.container.credentials
を使って username
と password
の map
を設定できます。 資格情報は、docker login
コマンドに指定するのと同じ値です。
例: コンテナー レジストリの資格情報の定義
container:
image: ghcr.io/owner/image
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
コンテナーで環境変数を使用する
jobs.<job_id>.container.env
を使用して、コンテナー内の環境変数の map
を設定します。
コンテナーでネットワーク ポートを公開する
jobs.<job_id>.container.ports
を使用して、コンテナーで公開するポートの array
を設定します。
コンテナー内のボリュームをマウントする
jobs.<job_id>.container.volumes
を使用して、コンテナーで使用するボリュームの array
を設定します。 volumes (ボリューム) を使用すると、サービス間で、または1つのジョブのステップ間でデータを共有できます。 指定できるのは、名前付きDockerボリューム、匿名Dockerボリューム、またはホスト上のバインドマウントです。
ボリュームを指定するには、次のソースパスとターゲットパスを指定してください。
<source>:<destinationPath>
。
<source>
は、ホスト マシン上のボリューム名または絶対パスであり、<destinationPath>
は、コンテナー内の絶対パスです。
例: コンテナーにボリュームをマウントする
volumes:
- my_docker_volume:/volume_mount
- /data/my_data
- /source/directory:/destination/directory
コンテナー リソースのオプションを設定する
jobs.<job_id>.container.options
を使用して、追加の Docker コンテナー リソース オプションを構成します。 オプションのリストについては、「docker create
オプション」を参照してください。
警告: --network
と --entrypoint
オプションはサポートされていません。