> For the complete documentation index, see [llms.txt](https://eduardo-2.gitbook.io/entornos-de-desarrollo/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://eduardo-2.gitbook.io/entornos-de-desarrollo/como-levantar-un-entorno.md).

# Cómo levantar un entorno

Hay que tener previamente instalado Docker y docker-compose

El proceso de levantar un entorno es el siguiente:

* Entrar en la consola/terminal.
* Ubicarnos en la raíz del proyecto.
* Sí es la primera vez que se levanta este entorno antes hay que construirlo con el comando `docker-compose build`
* Ejecutar el comando `docker-compose up -d`
* Trabajar.

Así de sencillo.

## Ejemplo Entorno para PHP

**Objetivo**: Crear un entorno con PHP + Apache + MariaDB

Utilizaremos el docker-compose.yml disponible en github: <https://gitlab.com/Didweb/dockers>

Es un repositorio con varios contenedores para distintos entornos. Aunque para este entorno solamente necesitaremos los ubicados en Aplicacion-PHP descargamos todos y los guardamos en nuestro ordenador para tenerlos y poder reutilizarlos. Pulsa sobre el icono de **Download** ...

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-Luwd06ecQJZ7v3LGUUx%2F-LuwlV0ONIviIRj_Aq6a%2Fdocker_gitlab.png?alt=media\&token=629494f0-905d-4149-9278-a376789b8899)

Copia los siguientes archivos donde vas a crear tu entorno. Archivos a copiar:

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-Luwd06ecQJZ7v3LGUUx%2F-LuwnMEpJj-qsktjV1Yz%2Fennn.png?alt=media\&token=a9740e00-a777-4253-98e8-e942eee6d063)

Te a de quedar este aspecto. El directorio **Aplicacion-PHP** puedes cambiarlo por el nombre de tu proyecto.

Ahora tenemos todo lo necesario para iniciar el entorno.

Vamos a ejecutar comandos en la consola o terminal.

Desde el terminal, tendremos que ubicarnos en el directorio ...

Para Mac y Linux ...

```
cd /Path/hacia/donde/tenemos/los/archivos
```

Para Windows (con la barra al revés)...

```
cd \Path\hacia\donde\tenemos\los\archivos
```

Para comprobar si estamos en el directorio. Con ls veremos el contenido

Mac, Linux y Windows...

```
ls
```

Tendremos que ver algo parecido a esto ...

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-Luwd06ecQJZ7v3LGUUx%2F-Luwqgjb4LYFV2lDR4yw%2Fls.png?alt=media\&token=e15c5905-4a20-4306-962d-f710e67b0cfe)

Como se aprecia estan todo los archivos y directorios de **Aplicacion-PHP**&#x20;

Sí e sla primera vez lo construimos y luego lo levantamos, con el siguiente comando...

**Construimos** (Solo si es la primera vez y no lo tenemos construido)...

```
docker-compose build
```

Sí no tenéis la imagen en vuestro ordenador tardará un poco, y vuestra consola parecerá Matrix, cuando termine, lo **levantamos** ...

```
docker-compose up -d
```

Saldrá algo parecido a esto...

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-Luwr_5GFL2lKe5fZWrK%2F-LuwsLTOINp-d9Jl9P7r%2Fup-d.png?alt=media\&token=e6af8eab-dd16-4d18-817b-d4ff20082ad3)

Como se puede ver hay levantados 3 contenedores **my-app-mariadb** (Base de datos), **source2\_app\_1** (PHP + apache) y **my-app-phpmyadmin** (el PHPMyAdmin)&#x20;

Si no s vamos a ver la carpeta o bien con tu IDE favorito o por las carpetas, verás que hay 2 directorios nuevos, **data** y **sessions**. Son necesarios para la base de datos y el phpMyAdmin, no te preocupes no las vas a necesitar. No los toques.

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-Luwr_5GFL2lKe5fZWrK%2F-LuwtxwXjtfCqR1Mwz5Q%2Fnuevos.png?alt=media\&token=690239e9-0816-4cdb-af2b-7e8ea19d3bb0)

Ahora de momento solamente tenemos un **index.php** en en la carpeta **html,** con la información de la conexión a la base de datos y la configuración de PHP.\
\
Para acceder al index de nuestra web, se ha de conocer el puerto por el que es accesible el contenedor para verlos pulsamos en le terminal...<br>

```
docker ps
```

Saldrá algo parecido a esto y el puerto sale destacado en la imagen...

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-LuwxWq6XcuZXTcg-9AU%2F-LuwxcYt9uRAXnRfUaYl%2Fpuertos.png?alt=media\&token=b93c0c6a-cc5e-4da0-91cd-3d58d4d44e38)

Si ampliais la imagen se ve que es el puerto ***8080*** en el contenedor **source4\_app\_1** que es por donde esta corriendo apache y nuestro PHP.

Ahora abrir el navegador y poner en la barra de direcciones...

```
http://localhost:8080
```

Saldará esto ....

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-LuwxWq6XcuZXTcg-9AU%2F-LuwyuCkdFd-Q1sP74-J%2Ferror.png?alt=media\&token=a3cb9f06-01b4-4f1d-a285-07187092ab86)

Ok!! Ya está funcionando PHP y Apache!!!\
Lo más seguro es que salga un error al conectar la base de datos. esto es debido a que en este index.php hay una conexión a la base de datos pero los datos están puestos por defecto. Si queremos comprobar que tenemos conexión a la base de datos, corregimos estos datos de conexión...

Abrimos el archivo `info.php`

Modificaremos las 4 primeras  (**$host**, **$usuario**, **$password**, **$nameDB**) variables por las correctas...

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-LuwxWq6XcuZXTcg-9AU%2F-Lux-Ha_gSfDK1iMprYw%2Fconexion.png?alt=media\&token=46487593-af10-47b7-af40-2e9d763203de)

¿ Y dónde están los datos correctos? .... en el archivo  `.env`&#x20;

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-Lv4LSrM9wFaWZNmC2Ot%2F-Lv4LmLm1Po04k1_s6kt%2Fenv_completo.png?alt=media\&token=b33722ea-f3f6-4fea-bed2-bed37b5c41e7)

Como se puede ver hay un listado con **nombres de variables = valores**

En este caso se puede ver que **$password** en el info.php es **123456X** y el valor correcto debería ser **123456** ... Nos vamos al archivo info.php y ponemos el password correcto.\
\
Ahora vamos de nuevo al navegador actualizamos y saldrá algo así...

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-LuwxWq6XcuZXTcg-9AU%2F-Lux0ZU-ocFc64ZnuaQI%2Fok.png?alt=media\&token=a3a4d1cd-091f-45b7-b310-8f564e7e58d9)

#### Pues ya tenemos un entorno de producción con php + apache + mariadb funcionando!!!

Ahora ya podemos programar, todo el código debe ir en el directorio **html**&#x20;

Este **index.php** lo puedes eliminar o poner otro nombre al archivo y así poder  comprobar  en otra ocasión que todo está bien.

Si queremos entrar a PhpMyadmin ... primero tenemos que saber en que puerto esta... con `docker ps` desde la consola. En este caso es ***8011*** .&#x20;

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-Lux0rgvC9fPMFqZb6B1%2F-Lux1q1u_sJlHuAF7JNb%2Fphpmy.png?alt=media\&token=669e96b9-0f3f-4273-91f6-dd398de268f3)

Ponemos las credenciales de acceso, recuerda que están en ... `.env`

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-Lux0rgvC9fPMFqZb6B1%2F-Lux2DAlw7rM0XFTwUGC%2Fcred.png?alt=media\&token=1ea78a60-b101-424f-b144-5cc150b00009)

Y se puede ver que está nuestra base de datos!

## Repasando ...

1. Abrimos la consola y nos situamos en el directorio.
2. Si es la primera vez ... `docker-composer build`
3. Si no es la primera vez o y has ejecutado el build ... `docker-compose up -d`
4. Para saber en qué puerto corre la aplicación... `docker ps`
5. Vamos al navegador con el puerto ... `http://localhost:8080` cambiar 8080 por el que corresponda.
6. Ya está.

Podemos cerrar y eliminar los contenedores con ...

```
docker-compose down
```

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-Lux0rgvC9fPMFqZb6B1%2F-Lux3R5X5JTBe1yxOrbm%2Fdosn.png?alt=media\&token=c423f90e-c53b-42c5-94e7-ed6d3b76af37)

Como se aprecia... los para y luego los elimina. Si te vas a **<http://localhost:8080>** veras qeu esta caida la web. Para levantarla solo hay que hacer ... `docker-comspoe up -d`

Todo los archivos que hayas modificado en html permanecerán en el la carpeta **html**, así como la base de datos, seguirá estando en su sitio.

## Configurar puertos y claves de Mysql

Si por alguna razón quieres cambiar los puertos, por ejemplo porque tiene varios proyectos y al coincidir los puertos no te deja levantar los contenedores. Simplemente ves al archivo **.env** y cambia por ejemplo los puertos en **PORT\_APP** o **PORT\_PHPMYADMIN** o **PORT\_DB.**

## **Cómo crear otros proyectos**

Si quieres abrir otro proyecto simplemente tienes que copiar los archivos de **Aplicacion-PHP** en otra carpeta de un nuevo proyecto y ejecutar el `docker-compose build` y luego el `docker-compose up -d`

#### ATENCIÓN !! Cambio de Nombres y Puertos de contenedores

Al abrir nuevos contenedores en la misma máquina, ten en cuenta que deberás cambiar el nombre  y puertos de los contenedores, ya que si hay dos contenedores con el mismo nombre se genera un error.&#x20;

Para cambiar los nombres antes de levantar el entorno modifica los parámetros del archivo `.env` ...

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-Lv4LSrM9wFaWZNmC2Ot%2F-Lv4LmLm1Po04k1_s6kt%2Fenv_completo.png?alt=media\&token=b33722ea-f3f6-4fea-bed2-bed37b5c41e7)
