node-mysql2 Docker & Self-Hosted Deployment

GitHub

Zap: fast mysqljs/mysql compatible mysql driver for node.js

4,360 stars TypeScript TypeScript 1 file ยท ~9,219 tokens #database-adapter#mysql#mysql-client#node-js
RAW Compose
1. Pull Image (DOCKERHUB) docker pull library/mysql
2. Docker Run (1-Click Launch) docker run -d --name node-mysql2 -p 3306:3306 --restart always mysql:lts
3. Podman Run podman run -d --name node-mysql2 -p 3306:3306 --restart always mysql:lts
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/library/mysql:lts
5. ORAS Pull (OCI Artifact) oras pull mysql:lts
6. Compose Deployment docker compose up -d
test/docker-compose.yml
Download .yml
name: mysql2
services:
  mysql:
    image: mysql:lts
    container_name: mysql
    environment:
      MYSQL_DATABASE: 'test'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
    ports:
      - '3306:3306'
    healthcheck:
      test: ['CMD', 'mysql', '-h', 'localhost', '-u', 'root', '-e', 'SELECT 1']
      interval: 1s
      timeout: 5s
      retries: 10
      start_period: 10s

  node:
    image: node:lts-alpine
    container_name: node
    environment:
      MYSQL_HOST: mysql
      CI: 1
      # Debugging
      MYSQL_USE_COMPRESSION: 0
      MYSQL_USE_TLS: 0
      STATIC_PARSER: 0
      FILTER: ''
    volumes:
      - ../:/usr/app:ro
      - /usr/app/node_modules
    working_dir: /usr/app
    command: sh -c "npm ci && npm test"
    depends_on:
      mysql:
        condition: service_healthy

  deno:
    image: denoland/deno:alpine
    container_name: deno
    environment:
      MYSQL_HOST: mysql
      CI: 1
      # Debugging
      MYSQL_USE_COMPRESSION: 0
      MYSQL_USE_TLS: 0
      STATIC_PARSER: 0
    volumes:
      - ../:/usr/app:ro
    working_dir: /usr/app
    command: deno task test:deno
    depends_on:
      mysql:
        condition: service_healthy

  bun:
    image: oven/bun:alpine
    container_name: bun
    environment:
      MYSQL_HOST: mysql
      CI: 1
      # Debugging
      MYSQL_USE_COMPRESSION: 0
      MYSQL_USE_TLS: 0
      STATIC_PARSER: 0
      FILTER: ''
    volumes:
      - ../:/usr/app:ro
    working_dir: /usr/app
    command: bun run test:bun
    depends_on:
      mysql:
        condition: service_healthy

  coverage:
    image: node:lts-alpine
    container_name: coverage
    environment:
      MYSQL_HOST: mysql
      CI: 1
      # Debugging
      MYSQL_USE_COMPRESSION: 0
      MYSQL_USE_TLS: 0
      STATIC_PARSER: 0
      FILTER: ''
    volumes:
      - ../:/usr/app:ro
      - ../coverage:/usr/app/coverage:rw
      - /usr/app/node_modules
    working_dir: /usr/app
    command: sh -c "npm ci && npm run test:coverage"
    depends_on:
      mysql:
        condition: service_healthy