그누보드5 도커 이미지 (Arm64, amd64 지원) > 그누보드5 팁자료실

그누보드5 팁자료실

그누보드5 도커 이미지 (Arm64, amd64 지원) 정보

그누보드5 도커 이미지 (Arm64, amd64 지원)

본문

PHP 버전은 8.2 Nginx의 버전은 1.25.3, (NJS_VERSION 0.8.2, PKG_RELEASE: 1~bookworm) 입니다.

현재 SemVer 태그에 따라 자동빌드되고 있습니다.

 

가볍게 `docker pull navystack/gnuboard`로 시작하시면 됩니다.

 

코어를 수정하셨으면 사용하기 어렵습니다.

혹시 코어를 수정하셔서 관련된 수정이 필요하시다면 깃허브에 이와 연관된 전체 코드를 전부 올려두었습니다. 참고하셔서 적절하게 수정하셔서 이미지를 만드시면 됩니다.

 

이미지는 공식 php이미지를 베이스로 사용했으며, Nginx를 구성하는 방식은 공식이미지를 참고하여 빌드하였습니다. Traefik을 사용하는 것을 가정했습니다. (인증서 관리의 이점)

Traefik을 사용하지 않으실 계획이라면, 리버스 프록시를 사용하실것을 권장합니다.

물론 인증서를 마운트하고, nginx의 conf파일을 수정하셔서 사용하셔도 됩니다.

 

 약 2달 정도 자체적으로 테스트를 했지만, 혹시 모를 오류가 있을 수 있습니다.

이미지는 버전을 고정해서 사용하시고, 업데이트 하기전에 데이터를 백업하시길 권장합니다.

 

그외의 PHP 버전이나, Nginx 버전이 필요하시면

docker buildx build 하실때 ARG를 전달해주시면 됩니다.

 

혹시, 하다가 막히는 부분이 있으면 댓글 남겨주세요. 다만 자주 방문하는 것이 아니라서, 답변이 늦을수 있습니다. 편하게 github에 이슈 남겨주셔도 좋습니다.

 

깃허브: https://github.com/NavyStack/gnuboard/

도커허브: https://hub.docker.com/r/navystack/gnuboard/

 

공식이미지의 모듈에서 추가한 Nginx 모듈
ngx_http_immutable_module.so

ngx_http_cache_purge_module.so

ngx_http_brotli_static_module.so

ngx_http_brotli_filter_module.so

ngx_pagespeed.so

 

포함하고 있는 PHP 모듈
/usr/local/etc/php/conf.d/docker-fpm.ini
/usr/local/etc/php/conf.d/docker-php-ext-apcu.ini
/usr/local/etc/php/conf.d/docker-php-ext-exif.ini
/usr/local/etc/php/conf.d/docker-php-ext-gd.ini
/usr/local/etc/php/conf.d/docker-php-ext-imagick.ini
/usr/local/etc/php/conf.d/docker-php-ext-intl.ini
/usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini
/usr/local/etc/php/conf.d/docker-php-ext-redis.ini
/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
/usr/local/etc/php/conf.d/docker-php-ext-zip.ini
/usr/local/etc/php/conf.d/error-logging.ini
/usr/local/etc/php/conf.d/opcache-recommended.ini

 

docker-compose.yml의 예시입니다.

version: "3.8"
services:
  gnuboard-g5:
    restart: always
    image: navystack/gnuboard:5.5.12
    volumes:
      - gnuboard5-data:/var/www/html
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=traefik-network"

      - "traefik.http.services.g5-srv.loadbalancer.server.port=80"
      - "traefik.http.services.g5-srv.loadbalancer.passhostheader=true"

      - "traefik.http.middlewares.www-redir.redirectregex.regex=^https://www.(.*)"
      - "traefik.http.middlewares.www-redir.redirectregex.replacement=https://$${1}"
      - "traefik.http.middlewares.www-redir.redirectregex.permanent=true"

      - "traefik.http.middlewares.compresstraefik.compress=true"

      - "traefik.http.routers.g5-rt.rule=Host(`navystack.com`) || Host(`www.navystack.com`)" ## 수정
      - "traefik.http.routers.g5-rt.entrypoints=websecure"
      - "traefik.http.routers.g5-rt.service=g5-srv"
      - "traefik.http.routers.g5-rt.middlewares=www-redir, compresstraefik"

      - "traefik.http.routers.g5-rt.tls=true"
      - "traefik.http.routers.g5-rt.tls.certresolver=letsencrypt" ## 수정
      - "traefik.http.routers.g5-rt.tls.domains[0].main=navystack.com" ## 수정
      - "traefik.http.routers.g5-rt.tls.domains[0].sans=*.navystack.com" ## 수정
    networks:
      - traefik-network
      - g5-internal

  gnuboard-db:
    restart: always
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
      - db_socket:/var/lib/mysqld
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: g5-db-name
      MYSQL_USER: g5-user
      MYSQL_PASSWORD: password

    networks:
      - g5-internal

volumes:
  gnuboard5-data:
  db_data:
  db_socket:

networks:
  traefik-network:
    external: true
  g5-internal:

 

관련 PR도 이미 진행중입니다.

https://github.com/gnuboard/gnuboard5/pull/302

해당 PR에는 제가 컴파일한 Nginx 모듈은 없습니다. (빌드시간 관련)

추천
0

댓글 0개

전체 2,428 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT