Skip to content

Repository files navigation

Docker Node Template

Este es un proyecto básico de ExpressJS con Docker y MySQL.

Comenzando

Prerrequisitos

  • Node.js
  • Docker
  • Docker Compose

Instalación

  1. Clona el repositorio:

    git clone https://github.com/yourusername/docker-node-template.git
    cd docker-node-template
  2. Crea un archivo .env basado en el archivo .env.template:

    cp .env.template .env
  3. Actualiza el archivo .env con tus variables de entorno.

  4. Construye y ejecuta los contenedores Docker:

    docker-compose up

Uso

  • La aplicación estará disponible en http://localhost:3000.
  • phpMyAdmin estará disponible en http://localhost:8080.

Endpoints

  • GET / - Devuelve "Hello, World!"
  • GET /ping - Devuelve la marca de tiempo actual de la base de datos

Estructura del Proyecto

my-express-app/
├── src/
│   ├── controllers/
│   │   └── exampleController.js
│   ├── models/
│   │   └── exampleModel.js
│   ├── routes/
│   │   └── exampleRoutes.js
│   ├── middlewares/
│   │   └── exampleMiddleware.js
│   ├── config/
│   │   └── database.js
│   ├── app.js
│   └── index.js
├── .env
├── .env.template
├── docker-compose.yml
├── docker-compose.prod.yml
├── Dockerfile
├── package.json
└── README.md

Configuración de Docker Compose

docker-compose.yml

version: "3.8"

services:
  mysqldb:
    image: mysql:5.7
    env_file: ./.env
    environment:
      - MYSQL_ROOT_PASSWORD=$MYSQLDB_ROOT_PASSWORD
      - MYSQL_DATABASE=$MYSQLDB_DATABASE
      - MYSQL_USER=$MYSQLDB_USER
      - MYSQL_PASSWORD=$MYSQLDB_PASSWORD
    ports:
      - $MYSQLDB_LOCAL_PORT:$MYSQLDB_DOCKER_PORT
    logging:
      driver: none

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
      - mysqldb
    environment:
      - PMA_HOST=mysqldb
      - MYSQL_ROOT_PASSWORD=$MYSQLDB_ROOT_PASSWORD
    ports:
      - 8080:80

  app:
    depends_on:
      - mysqldb
      - phpmyadmin
    links:
      - mysqldb
    build: .
    env_file: ./.env
    ports:
      - $NODE_LOCAL_PORT:$NODE_DOCKER_PORT
    volumes:
      - .:/myapp
    command: sh -c "npm install && npm run dev"

docker-compose.prod.yml

version: "3.8"

services:
  mysqldb:
    image: mysql:5.7
    env_file: ./.env
    environment:
      - MYSQL_ROOT_PASSWORD=$MYSQLDB_ROOT_PASSWORD
      - MYSQL_DATABASE=$MYSQLDB_DATABASE
      - MYSQL_USER=$MYSQLDB_USER
      - MYSQL_PASSWORD=$MYSQLDB_PASSWORD
    ports:
      - $MYSQLDB_LOCAL_PORT:$MYSQLDB_DOCKER_PORT
    logging:
      driver: none

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
      - mysqldb
    environment:
      - PMA_HOST=mysqldb
      - MYSQL_ROOT_PASSWORD=$MYSQLDB_ROOT_PASSWORD
    ports:
      - 8080:80

  app:
    depends_on:
      - mysqldb
      - phpmyadmin
    links:
      - mysqldb
    build: .
    env_file: ./.env
    ports:
      - $NODE_LOCAL_PORT:$NODE_DOCKER_PORT
    environment:
      - DB_HOST=$MYSQLDB_HOST
      - DB_USER=$MYSQLDB_USER
      - DB_PASSWORD=$MYSQLDB_PASSWORD
      - DB_NAME=$MYSQLDB_DATABASE
      - DB_PORT=$MYSQLDB_DOCKER_PORT

Variables de Entorno

Crea un archivo .env en el directorio raíz con el siguiente contenido:

MYSQLDB_USER=newuser
MYSQLDB_PASSWORD=newpassword
MYSQLDB_ROOT_PASSWORD=root
MYSQLDB_DATABASE=mydatabase
MYSQLDB_LOCAL_PORT=3306
MYSQLDB_DOCKER_PORT=3306
NODE_LOCAL_PORT=3000
NODE_DOCKER_PORT=3000
MYSQLDB_HOST=mysqldb

Dockerfile

FROM node:14

WORKDIR /myapp

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "run", "dev"]

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages