Docker & How

Docker & How

Concept?

เริ่มต้นด้วยการ ติดตั้ง docker desktop
https://www.docker.com/products/docker-desktop

จากนั้น สร้าง folder สำหรับ project ของเราที่จะเอา server ต่างๆมายำรวมกัน

สร้างไฟล์ docker-compose.yml ที่เป็น file หลักที่เก็บรวบรวมภาพรวมของ project ของเรา

ตัวอย่างไฟล์ที่รวบรวมเอา DB server หลายๆตัวเอาไว้ เปรียบเหมือน computer ซักเครื่องที่ลง software เหล่านี้เอาไว้แล้ว ทั้งที่จริงๆแล้วเราไม่ได้ลง

version: '3.8'

services:
  mysql:
    image: mysql:8.0
    container_name: mysql_db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_USER: thada
      MYSQL_PASSWORD: 123456
      MYSQL_DATABASE: testdb
    ports:
      - "3406:3306"
    volumes:
      - mysql_data:/var/lib/mysql

  postgres:
    image: postgres:15
    container_name: postgres_db
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: 123456
      POSTGRES_USER: thada
      POSTGRES_DB: testdb
    ports:
      - "5433:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

  informix:
    image: icr.io/informix/informix-developer-database:latest
    container_name: informix_db
    restart: unless-stopped
    environment:
      LICENSE: accept
      INFORMIX_PASSWORD: 123456
      INFORMIXSERVER: "informix_db"
      DBSERVERNAME: "informix_db"
      DBSERVERALIASES: "informix_db"
    ports:
      - "9088:9088"
      - "9089:9089"
    volumes:
      - informix_data:/opt/ibm/data
    cap_add:
      - SYS_RESOURCE

  php:
    build: ./php
    container_name: php_fpm
    restart: unless-stopped
    working_dir: /var/www/html
    volumes:
      - ./www:/var/www/html
    depends_on: # <- เพิ่มเข้ามา
      - mysql
      - postgres
      - informix

  webserver:
    image: nginx:1.25 # <- แก้ไขแล้ว
    container_name: nginx_web
    restart: unless-stopped
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./www:/var/www/html
    ports:
      - "8000:80"
    depends_on: # <- เพิ่มเข้ามา
      - php

volumes:
  mysql_data:
  postgres_data:
  informix_data: