Información general
Use jobs.<job_id>.container
a fin de crear un contenedor para ejecutar cualquier paso de un trabajo que todavía no especifique un contenedor. Si tienes pasos que usan tanto acciones de script como de contenedor, las acciones de contenedor se ejecutarán como contenedores hermanos en la misma red con los mismos montajes de volumen.
Si no configura un objeto container
, todos los pasos se ejecutarán directamente en el host especificado por runs-on
, a menos que un paso haga referencia a una acción configurada para ejecutarse en un contenedor.
Note
El shell predeterminado para los pasos run
dentro de un contenedor es sh
en lugar de bash
. Esto se puede invalidar con jobs.<job_id>.defaults.run
o jobs.<job_id>.steps[*].shell
.
Ejemplo: Ejecución de un trabajo dentro de un contenedor
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)
Cuando solo especifique una imagen de contenedor, puede omitir la palabra clave image
.
jobs:
container-test-job:
runs-on: ubuntu-latest
container: node:18
Definición de la imagen de contenedor
Use jobs.<job_id>.container.image
a fin de definir la imagen de Docker que usar como contenedor para ejecutar la acción. El valor puede ser el nombre de imagen de Docker Hub o un nombre de registro.
Definición de credenciales para un registro de contenedores
Si el registro de contenedor de la imagen necesita la autenticación para extraer la imagen, puede usar jobs.<job_id>.container.credentials
para establecer un valor map
de username
y password
. Las credenciales son los mismos valores que se proporcionarían al comando docker login
.
Ejemplo: definir las credenciales para un registro de contenedores
container:
image: ghcr.io/owner/image
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
Uso de variables de entorno con un contenedor
Usa jobs.<job_id>.container.env
para establecer un map
de variables de entorno en el contenedor.
Exposición de puertos de red en un contenedor
Use jobs.<job_id>.container.ports
para establecer un elemento array
de puertos que se exponga en el contenedor.
Montaje de volúmenes en un contenedor
Use jobs.<job_id>.container.volumes
para establecer un valor array
de volúmenes para que lo use contenedor. Puedes usar volúmenes para compartir datos entre servicios u otros pasos en un trabajo. Puedes especificar volúmenes Docker con nombre, volúmenes Docker anónimos o montajes de enlace en el host.
Para especificar un volumen, especifica la ruta de origen y destino:
<source>:<destinationPath>
.
<source>
es un nombre de volumen o una ruta absoluta en el equipo host y <destinationPath>
es una ruta absoluta en el contenedor.
Ejemplo: Montaje de volúmenes en un contenedor
volumes:
- my_docker_volume:/volume_mount
- /data/my_data
- /source/directory:/destination/directory
Establecimiento de opciones de recursos de contenedor
Use jobs.<job_id>.container.options
para configurar opciones adicionales de recursos del contenedor de Docker. Para obtener una lista de opciones, vea "Opciones de docker create
".
Warning
Las opciones --network
y --entrypoint
no se admiten.