CentOS 7 เก่ามากแล้ว ลงโปรแกรมอะไรก็ไม่ค่อยได้ บางตัวใช้ไม่ได้เลย ต้องเป็น kernel ใหม่เท่านั้น อันนี้เป็นการ Upgrade Kernel ของ Linux ใน CentOS 7 ซึ่งใช้ kernel 3.10

1. ดูก่อนว่า kernel เรารุ่นไหนแล้ว

uname -msr

2. ให้ update repositories

sudo yum -y update

3. เพิ่ม Repository ของ ELRepo

ตัวไฟล์ docker-compose.yml เป็นดังนี้

version: '3.1'
services:
  web:
    image: apache_phpmyadmin
    restart: always
    ports:
      - 80:80
#   container_name: apache
    stdin_open: true
    tty: true

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

  db:
    image: mysql:8.0.32
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example

 

ทำ docker image ที่จะต้องใช้หลายๆ ที่ เอาไว้ใน docker hub เลย จะได้ไม่ต้องทำอะไรหลายรอบ พอต้องได้ทำ ก็ทำให้ได้เรียนรู้เรื่องการทำ image หลายอย่าง มีประเด็นเล็กน้อย เยอะมากจริงๆ

ตัว image Dockerfile ในการ build จะมีรายละเอียดตามนี้

จะทำ reverse proxy ให้ รพ.ปากท่อ แต่ไปดูแล้ว ไม่มีเครื่องว่างเลย และ Linux ที่ลงไว้ก็เป็น CentOS สาย RedHat ซึ่งก็เก่าแล้ว เอา nginx certbot ไปลง ก็เป็นรุ่นเก่าไปแล้ว จะ update ระบบ เดี๋ยว php และ software ตัวอื่นๆ เปลี่ยน version ไป แล้วงานที่มีอยู่เดิมของเขาหยุดทำงาน จะยิ่งยุ่งไปใหญ่

พอดีดูในเครื่องที่เขาใช้ทำงานอยู่ มีลง docker เอาไว้แล้ว ความคิดก็แว่บมาว่า ถ้างั้นทำ docker มาลงสิ จะใช้ Linux ตัวไหนก็ได้ตามใจเราเลย

เริ่มจากคิดก่อนว่าจะเอา base มาจากตัวไหน ปกติถนัด ubuntu ก็เลยเอา base ของ ubuntu มาทำ

ใช้ตัว LTS ใหม่สุด คือ 22.04 jammy เริ่มต้นเขียน Dockerfile กันเลย

FROM ubuntu:jammy

พื้นที่ทำงานของเราจะเป็น /etc/nginx

WORKDIR /etc/nginx

ปรับ Ubuntu 20.04 ให้เปลี่ยน version ของ php จากรุ่น 7.x ไปเป็น 8.x

กรณีทำเป็น Module

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php libapache2-mod-php
sudo a2dismod php7.4
sudo a2enmod php8.x

sudo systemctl restart apache2

ดึงข้อมูลออกจากไฟล์ 10677_CIGNREP_xxxx.REP ไฟล์นี้ต้นฉบับที่ extract ออกมาจาก zip จะมี encoding เป็น cp874

เมื่อ extract ออกมาแล้ว ต้องแปลงให้เป็น utf-8 ก่อน โดยใช้ iconv ดังนี้