Redmine : docker-compose.yaml

Redmine 이 무엇인지는 링크 참조.

docker-compose.yaml

version: '3.1'

services:

  redmine:
    container_name: redmine
    image: redmine
    restart: always
    ports:
      - 8080:3000
    environment:
      REDMINE_DB_MYSQL: db
      REDMINE_DB_PASSWORD: fpemakdls
      REDMINE_DB_DATABASE: redmine
      REDMINE_DB_ENCODING: utf8
      #REDMINE_NO_DB_MIGRATE: true
    volumes:
      - ./volumes/redmine/usr/src/redmine/files:/usr/src/redmine/files
      - ./volumes/redmine/usr/src/redmine/plugins:/usr/src/redmine/plugins
      - ./volumes/redmine/usr/src/redmine/public/themes:/usr/src/redmine/public/themes

  db:
    container_name: mariadb
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: fpemakdls
      MYSQL_DATABASE: redmine
    ports:
      - 3306:3306
    volumes:
      - ./volumes/mysql/var/lib/mysql:/var/lib/mysql
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci

디렉토리 생성

mkdir  -p  ./volumes/redmine/usr/src/redmine/files
mkdir      ./volumes/redmine/usr/src/redmine/plugins
mkdir  -p  ./volumes/redmine/usr/src/redmine/public/themes
mkdir  -p  ./volumes/mysql/var/lib/mysql

Nginx Proxy Manager : docker-compose.yaml

Nginx Proxy Manager가 무엇인지는 링크를 참조.

docker-compose.yaml

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    ports:
      - '80:80'                  # 일반 http 용 port
      - '81:81'                  # 관리 페이지 용 port
      - '443:443'                # https 서비스 용 port
    environment:
      DB_MYSQL_HOST: "db" 
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm" 
      DB_MYSQL_PASSWORD: "npm" 
      DB_MYSQL_NAME: "npm" 
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
  db:
    image: 'jc21/mariadb-aria:latest'
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./data/mysql:/var/lib/mysql
#      - ./etc/my.cnf.d:/etc/my.cnf.d       mariadb(mysql을 사용할 때도 동일) 설정을 변경하고자 할 때 생성하고 설정 파일을 넣는다.

디렉토리 생성

docker-compose.yaml 파일이 존재하는 디렉토리에 아래와 같이 세 개의 디렉토리를 생성한다.


mkdir ./data
mkdir ./letsencrypt
mkdir -p ./data/mysql
mkdir -p ./etc/my.cnf.d

kubernetes #5. Harbor 설치

Harbor1항구를 의미한다. docker, 컨테이너 등이 쌓여있는 항구를 생각하면 잘 지은 이름이란 생각이 든다.는 정책 및 역할 기반 액세스 제어로 아티팩트를 보호하고, 이미지가 스캔되고 취약성이 없는지 확인하고, 이미지를 신뢰할 수 있는 것으로 서명하는 오픈 소스 레지스트리이다. 규정 준수, 성능 및 상호 운용성 제공을 통해 Kubernetes 및 Docker와 같은 클라우드 네이티브 컴퓨팅 플랫폼에서 일관되고 안전하게 아티팩트를 관리하기 위한 도구이다. 2Habor 홈페이지에서 발췌

다운로드
여기에서 버전 정보를 확인하고 다운로드 하자

haedong@kubesphere-01:~:]$ wget --no-check-certificate https://github.com/goharbor/harbor/releases/download/v2.3.2/harbor-offline-installer-v2.3.2.tgz
--2021-08-26 16:07:43--  https://github.com/goharbor/harbor/releases/download/v2.3.2/harbor-offline-installer-v2.3.2.tgz
Connecting to 168.219.61.252:8080... connected.
Saving to: ‘harbor-offline-installer-v2.3.2.tgz’
100%[======================================================================================================================================================>] 605,477,475 3.56MB/s   in 2m 54s

haedong@kubesphere-01:~:]$ tar -xvzf harbor-offline-installer-v2.3.2.tgz
harbor/harbor.v2.3.2.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmpl

harbor.yaml 수정
세세한 옵션은 원본 harbor.yml.tmpl 파일의 주석을 참고하자.

haedong@kubesphere-01:~:]$ cp harbor/harbor.yml.tmpl harbor/harbor.yml
haedong@kubesphere-01:~:]$ vi harbor/harvor.yml
# 아래를 몽땅 붙여넣기 한다.
hostname: kubesphere-01
http:
  port: 80
harbor_admin_password: 비밀번호_password
database:
  password: 비밀번호_password
  max_idle_conns: 100
  max_open_conns: 900
data_volume: /data
trivy:
  ignore_unfixed: false
  skip_update: false
  insecure: false
jobservice:
  max_job_workers: 10
notification:
  webhook_job_max_retry: 10
chart:
  absolute_url: disabled
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
_version: 2.3.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy

인스톨
sudo 명령 사용시 PATH 변수와 관련해서 docker-compose를 인식하지 못할 수도 있다. ‘sudo -i’ 나 ‘su – root’ 등의 명령으로 root로 로그인한 뒤 작업하자.

root@kubesphere-01:/home/haedong/harbor:]# ./install.sh
[Step 0]: checking if docker is installed ...
Note: docker version: 20.10.8
[Step 1]: checking docker-compose is installed ...
Note: docker-compose version: 1.29.2
[Step 2]: loading Harbor images ...
Loaded image: goharbor/redis-photon:v2.3.2
...중략...
Creating harbor-portal ... done
Creating harbor-core   ... done
Creating harbor-jobservice ... done
Creating nginx             ... done
✔ ----Harbor has been installed and started successfully.----

웹브라우저를 이용해 설정에
kubesphere-01에 해당하는 호스트 80 포트로 접속을 시도해본다.
계정 : admin
패스워드 : 패스워드_password (yaml 파일의 harbor_admin_password: 에 넣은 값)

kubernetes #4. docker compse 설치

Compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구로써 Compose에서는 YAML 파일을 사용하여 애플리케이션 서비스를 구성하고 단일 명령으로 구성에서 모든 서비스를 만들고 시작할 수 있도록 한다.

“For alpine, the following dependency packages are needed: py-pippython3-devlibffi-devopenssl-devgcclibc-devrustcargo and make. “1 yum을 이용할 경우 패키지의 이름이 다르다. 아래 명령줄을 참고하자.라고 한다. 관련 패키지를 설치한다.

haedong@kubesphere-01:~:]$ sudo yum install python-pip python3-devel libffi-devel openssl-devel gcc libc-devel rust cargo  make
...중략...
  Verifying  : redhat-rpm-config-9.1.0-88.el7.centos.noarch                                                                                                                                                                                                                                29/29

Installed:
  cargo.x86_64 0:1.53.0-1.el7                libffi-devel.x86_64 0:3.0.13-19.el7                openssl-devel.x86_64 1:1.0.2k-19.el7                python2-pip.noarch 0:8.1.2-14.el7                python3-devel.x86_64 0:3.6.8-17.el7                rust.x86_64 0:1.53.0-1.el7
Dependency Installed:
  dwz.x86_64 0:0.11-3.el7             keyutils-libs-devel.x86_64 0:1.5.8-3.el7 krb5-devel.x86_64 0:1.15.1-50.el7       libcom_err-devel.x86_64 0:1.42.9-19.el7 libkadm5.x86_64 0:1.15.1-50.el7           libselinux-devel.x86_64 0:2.5-15.el7 
...중략...
Complete!

설치
공식 홈페이지의 가이드는

haedong@kubesphere-01:~:]$ sudo curl -k -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (35) TCP connection reset by peer

이지만…… 왜인지 안된다. 그냥 다운로드 하자. 2여기에서 버전 정보를 확인할 수 있다.

haedong@kubesphere-01:~:]$ wget --no-check-certificate https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
--2021-08-26 15:52:24--  https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64
Saving to: ‘docker-compose-Linux-x86_64’
100%[=======================================================================================================================================================================================================================================================>] 12,737,304  3.61MB/s   in 3.7s
2021-08-26 15:52:29 (3.29 MB/s) - ‘docker-compose-Linux-x86_64’ saved [12737304/12737304]

/usr/local/bin 경로로 파일 이동 후 권한 변경

haedong@kubesphere-01:~:]$ sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
haedong@kubesphere-01:~:]$ sudo chmod +x /usr/local/bin/docker-compose
haedong@kubesphere-01:~:]$ docker-compose
Define and run multi-container applications with Docker.
Usage:
  docker-compose [-f <arg>...] [--profile <name>...] [options] [--] [COMMAND] [ARGS...]
  docker-compose -h|--help
Options:
...후략

※ /usr/local/bin 디렉토리가 $PATH 에 포함되어있지 않다면 추가 해야 한다. /etc/profile (모든 사용자에 적용) ~/.bash_profile의 $PATH 에 위 경로를 추가하자.

haedong@kubesphere-01:~:]$ sudo echo export PATH=$PATH:/usr/local/bin >> ~/.bash_profile
haedong@kubesphere-01:~:]$ source ~/.bash_profile