En docker-compose.yml tengo un servicio
app: image: yiisoftware/yii2-php:7.1-apache volumes: - ~/.composer-docker/cache:/root/.composer/cache:delegated - ./:/app:delegated ports: - '80:80' depends_on: - db Así que quiero ejecutar el comando yii migrate --interactive=0 cuando se inicia el contenedor. Pero si solo agrego una cadena
command: "yii migrate --interactive=0" Anula el comando que ya se especificó en yiisoftware/yii2-php:7.1-apache dockerfile. ¿Cómo puedo agregar un comando, no reemplazarlo? ¿Es posible?
Ya busqué en Google este problema, pero la solución más popular es "crear su propio dockerfile". ¿Puedo resolver esto sin crear/modificar el archivo docker o el script de shell, solo con docker-compose?
Para hacer esto, tendría que definir su propio ENTRYPOINT en su docker-compose.yml . Además de construir su propio Dockerfile, no hay forma de evitar esto.
Sin embargo, por más que busco, no puedo encontrar una instrucción CMD en el Dockerfile de esta imagen. Así que esto es probablemente lo que se está utilizando.
No estoy familiarizado con PHP, por lo que no puedo estimar qué tendrías que cambiar para ejecutar un contenedor con tus necesidades específicas, pero estos son los puntos que deberías revisar.
Puede incluir el comando preexistente en su nuevo comando. Ahora comprenda que todo en esos comandos se puede llamar desde sh o bash. Así que busque el comando existente haciendo un:
docker image inspect yiisoftware/yii2-php:7.1-apacheLuego verifique el comando en Config { Command }. (No ConatinerConfig.) Entonces, si el comando existente hubiera sido:
"start-daemon -z foo-bar"entonces su nuevo comando sería:
sh -c "start-daemon -z foo-bar; yii migrate --interactive=0"Ahora tendrá el comando existente más su nuevo comando y el efecto deseado.