Por fin luego de tanto trabajar hemos hallado el arreglo de esta cuestión que muchos lectores de este sitio han tenido. Si tienes algún detalle que aportar no dudes en compartir tu conocimiento.
Solución:
La respuesta a esta pregunta parece haber cambiado con las nuevas versiones de docker-compose. hay una etiqueta "com.docker.compose.project.working_dir": "/var/opt/docker",
que apunta al directorio donde comencé docker-compose. no he comprobado si eso es pwd
o la ubicación real del archivo docker-compose.yml.
esto me dio información interesante sobre docker-compose:
[email protected]:~$ docker inspect fc440a1afbaa | grep com.docker.compose "com.docker.compose.config-hash": "89069285a4783b79b421ea84f2b652becbdee148fbad095a6d9d85aab67ececc", "com.docker.compose.container-number": "1", "com.docker.compose.oneoff": "False", "com.docker.compose.project": "docker", "com.docker.compose.project.config_files": "docker-compose.yml", "com.docker.compose.project.working_dir": "/var/opt/docker", "com.docker.compose.service": "jenkins", "com.docker.compose.version": "1.25.0" [email protected]:~$
Estoy ejecutando la configuración docker-compose.yml versión 3.6
Está no actualmente posible.
Como alternativa, podría encontrar útil lo siguiente:
- Utilizar
docker ps -a | grep
- Utilizar
locate docker-compose.yml
y encuentra el que quieras - Utilizar
docker-compose restart
(hacerdocker-compose
ver opción)
Por lo que puedo ver, docker inspect CONTAINER_NAME no proporciona esta información, ni docker-compose proporciona un método para obtener información relacionada con la redacción de un contenedor en ejecución.
Desde un contenedor que ya se está ejecutando y que no controla, la información no está allí. Puede inferir la ubicación utilizando directorios de montaje de enlace si el contenedor crea montajes de host en directorios relativos. De lo contrario, es posible implementar contenedores sin componer, y es posible usar componer sin un archivo de composición en el sistema de archivos (canalizado a través de stdin), y componer no almacena estos detalles en los contenedores en ejecución por usted.
Lo que me gustaría hacer en un script:
- enumerar ciertos contenedores en ejecución en un host docker
- obtener las ubicaciones correspondientes del archivo docker-compose.yml
- use docker-compose para reiniciar todos los contenedores de los proyectos correspondientes de docker-compose a la vez
Si solo desea ejecutar un reinicio en todos los contenedores en el mismo proyecto, no necesita los primeros dos pasos, o incluso docker-compose
. En su lugar, puede ejecutar:
docker ps --filter "label=com.docker.compose.project=$your_compose_project" -q
| xargs docker restart
Que usa una etiqueta docker-compose agrega a cada proyecto que implementa.
Si desea almacenar de manera proactiva la ubicación del archivo de redacción para su uso posterior, puede insertarlo como una etiqueta en su archivo de redacción:
version: '2'
services:
test:
image: busybox
command: tail -f /dev/null
labels:
COMPOSE_PATH: $PWD # many Linux shells define the PWD variable
Si su shell no establece un $PWD
variable de entorno, puede comenzar a componer con:
PWD=$(pwd) docker-compose up -d
Luego puede inspeccionar los contenedores para el valor de esta etiqueta con:
docker inspect --format '.Config.Labels.COMPOSE_PATH' $your_container_id
Y puede encadenar un comando de filtro e inspección para encontrar la ruta de un proyecto específico:
docker ps --filter "label=com.docker.compose.project=$your_compose_project" -q
| xargs docker inspect --format '.Config.Labels.COMPOSE_PATH'
Reseñas y calificaciones de la guía
No se te olvide dar recomendación a esta noticia si si solucionó tu problema.