es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Docker compose utiliza la misma versión de PHP entre los contenedores.

Tengo contenedores nginx, php y codecept que están conectados con Docker Compose, cuando ejecuto el contenedor de codecept, noto que obtiene la versión de php 7.4, mientras que en mi contenedor de php estoy ejecutando php 8 y muchos de los paquetes dependen de php 8, por lo que falla al iniciarse.

¿Es posible hacer que codecept ejecute php desde mi contenedor?
¿O es posible configurar codecept para que ejecute la misma versión de php?

Este es mi archivo docker-compose.yml:

version: '3'
services:
  web:
    build:
      context: ./
      dockerfile: ./dockerfiles/nginx
      args:
        NGINX_VERSION: latest
    container_name: nginx
    volumes:
      - ./html:/var/www/html:cached
    ports:
      - "80:80"
      - "443:443"
    networks:
      - my-network
    restart: always
    depends_on:
      - php
  codecept:
    image: codeception/codeception
    container_name: codeception
    depends_on:
      - web
    volumes:
      - ./html:/project
    networks:
      - my-network
  php:
    build:
      context: ./
      dockerfile: ./dockerfiles/php
      args:
        PHP_VERSION: 8.0.10
    container_name: php
    ports:
      - 9000:9000
    networks:
      - my-network
    restart: always
    volumes:
      - ./html:/var/www/html:cached

networks:
  my-network: null
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible ejecutar Codeception con PHP desde el mismo contenedor.

    Puede configurar la versión de PHP para el contenedor de Codecept especificando la imagen que se utilizará en el archivo docker-compose.yml. Por ejemplo, si desea usar PHP 8 para el contenedor de Codecept, puede especificar la imagen de la siguiente manera:

    codecept:
      image: php:8.0-fpm-alpine
      container_name: codeception
      depends_on:
        - web
      volumes:
        - ./html:/project
      networks:
        - my-network
    

    Alternativamente, también puede utilizar un Dockerfile personalizado para el contenedor de Codecept que se base en la misma imagen de PHP que el contenedor de php. Aquí hay un ejemplo de cómo podría ser su Dockerfile para el contenedor de Codecept:

    FROM php:8.0-fpm-alpine
    
    WORKDIR /project
    COPY . /project
    
    RUN apk add --no-cache \
        git \
        unzip \
        libzip-dev && \
        docker-php-ext-install zip pdo_mysql mysqli
    

    Este Dockerfile instala las extensiones y dependencias necesarias, y copia los archivos del proyecto de Codecept dentro del contenedor.

    Una vez que haya actualizado el archivo docker-compose.yml o creado el Dockerfile para el contenedor de Codecept, puede reconstruir sus contenedores utilizando el siguiente comando:

    docker-compose up --build

    Esto reconstruirá sus contenedores y actualizará el contenedor de Codecept para usar la misma versión de PHP que el contenedor de php.

Comments are closed.