Tengo un problema en mi sesión SSH con un contenedor docker. En realidad, no puedo ejecutar ningún comando debido a un proceso en ejecución que nunca me da la mano en la terminal, vea el resultado:
[Thu Apr 02 19:39:46.056749 2020] [mpm_prefork:notice] [pid 7] AH00163: Apache/2.4.43 (Unix) PHP/7.3.16 configured -- resuming normal operations [Thu Apr 02 19:39:46.057465 2020] [core:notice] [pid 7] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'Dockerfile instala Apache en Alpine y finaliza:
ENTRYPOINT [ "/opt/entrypoint.sh" ]punto de entrada.sh:
/usr/sbin/httpd -D FOREGROUND¿Alguna pista sobre cómo puedo hacer que mi sesión SSH funcione y me ayude a ejecutar otros comandos? Gracias.
El paradigma del contenedor no promueve el uso de cosas como servidores ssh. El concepto central es que solo está alojando un único proceso aislado dentro del contenedor, en su caso, 'httpd'.
en otras palabras, no hay un servidor ssh ejecutándose dentro del contenedor de apache, solo aloja el proceso del servidor web.
Puede usar un comando como docker exec <container_name> <command> para ejecutar otro proceso en el mismo contenedor. Por ejemplo:
docker exec myhttpd ls -laQue enumerará el contenido del directorio de trabajo configurado en el contenedor.
docker exec conectará stdout y stderr en su sesión de terminal actual a stdout y stderr del contenedor, y ejecutará su comando en el entorno del contenedor.
Esta es una buena solución para solucionar problemas y probar cosas. Pero busque alternativas si está buscando cambiar permanentemente el entorno de su aplicación contenida. Como usar el Dockerfile.
Si proporciona más información sobre su caso de uso, estaré encantado de hacerle una sugerencia.
En realidad, mover el comando de mi dockerfile al archivo de proceso proporcionado por mi proveedor de alojamiento resolvió el problema. Dockerfile después de este cambio:
FROM alpine # install apache # other installation requirements EXPOSE 80 # commented the line below # ENTRYPOINT ["/opt/entrypoint.sh"]Y movió la última instrucción a Procfile. Después de este cambio, el proceso será un servicio publicado desde mi contenedor y no un punto de entrada que se ejecutará cada vez que se construya o reinicie la imagen.