Vue d’ensemble
Utilisez jobs.<job_id>.container
pour créer un conteneur permettant d’exécuter les étapes d’un travail qui ne spécifient pas encore de conteneur. Si vous avez des étapes qui utilisent à la fois des actions de script et des actions de conteneur, les actions de conteneur s’exécutent en tant que conteneurs frères sur le même réseau avec les mêmes montages de volume.
Si vous ne définissez pas de container
, toutes les étapes s’exécutent directement sur l’hôte spécifié par runs-on
, sauf si une étape fait référence à une action configurée pour s’exécuter dans un conteneur.
Note
L’interpréteur de commandes par défaut pour les étapes run
incluses dans un conteneur est sh
plutôt que bash
. Vous pouvez le remplacer par jobs.<job_id>.defaults.run
ou jobs.<job_id>.steps[*].shell
.
Exemple : Exécution d’un travail dans un conteneur
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)
Quand vous spécifiez uniquement une image conteneur, vous pouvez omettre le mot clé image
.
jobs:
container-test-job:
runs-on: ubuntu-latest
container: node:18
Définition de l’image conteneur
Utilisez jobs.<job_id>.container.image
pour définir l’image Docker à utiliser en tant que conteneur afin d’exécuter l’action. La valeur peut être le nom de l’image Docker Hub ou un nom de registre.
Définition des informations d’identification d’un registre de conteneurs
Si le registre de conteneurs de l’image nécessite une authentification pour tirer l’image, vous pouvez utiliser jobs.<job_id>.container.credentials
pour définir un map
de username
et de password
. Les informations d’identification correspondent aux mêmes valeurs que celles que vous fournissez à la commande docker login
.
Exemple : Définition des informations d’identification d’un registre de conteneurs
container:
image: ghcr.io/owner/image
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
Utilisation de variables d’environnement avec un conteneur
Utilisez jobs.<job_id>.container.env
pour définir un map
de variables d’environnement dans le conteneur.
Exposition de ports réseau sur un conteneur
Utilisez jobs.<job_id>.container.ports
pour définir un array
de ports à exposer sur le conteneur.
Montage de volumes dans un conteneur
Utilisez jobs.<job_id>.container.volumes
pour définir un array
de volumes à utiliser par le conteneur. Vous pouvez utiliser des volumes pour partager des données entre des services ou d’autres étapes d’un travail. Vous pouvez spécifier des volumes Docker nommés, des volumes Docker anonymes ou des montages de liaisons sur l’hôte.
Pour spécifier un volume, vous spécifiez le chemin source et le chemin de destination :
<source>:<destinationPath>
.
La valeur <source>
est un nom de volume ou un chemin absolu sur la machine hôte et <destinationPath>
est un chemin absolu dans le conteneur.
Exemple : Montage de volumes dans un conteneur
volumes:
- my_docker_volume:/volume_mount
- /data/my_data
- /source/directory:/destination/directory
Définition des options de ressources de conteneur
Utilisez jobs.<job_id>.container.options
pour configurer des options supplémentaires de ressources de conteneur Docker. Pour obtenir la liste des options, consultez « Options docker create
».
Warning
Les options --network
et --entrypoint
ne sont pas prises en charge.