>  기사  >  데이터 베이스  >  Docker 컨테이너에 Redmine 설정

Docker 컨테이너에 Redmine 설정

DDD
DDD원래의
2024-09-19 10:30:30790검색

Setup Redmine on Docker Container

Redmine은 유연한 오픈 소스 프로젝트 관리 및 문제 추적 웹 애플리케이션입니다. 프로젝트 관리, 버그 추적, 작업 및 마감일 처리에 널리 사용됩니다. Ruby on Rails를 사용하여 개발된 Redmine은 사용자 정의가 가능하며 팀 협업 및 프로젝트 구성을 위한 다양한 기능을 지원합니다.

Redmine은 유연성, 사용자 정의 및 오픈 소스 특성으로 인해 상용 프로젝트 관리 도구의 인기 있는 대안입니다.

이 기사에서는 데이터베이스 서버, mysql 및 nginx와 함께 docker 컨테이너에 redmine을 역방향 프록시로 설정합니다.

도커 설치

AWS EC2에서 호스팅되는 ubuntu 서버와 docker 공식 설치 가이드를 사용합니다.

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

우리는 docker compose와 함께 최신 버전의 docker를 사용합니다.

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

좋아, docker가 설치되었습니다. 다음으로 사용자(ubuntu)가 sudo 없이 docker에 직접 액세스할 수 있도록 구성해야 합니다.

sudo groupadd docker
sudo usermod -aG docker $USER

그런 다음 로그아웃하고 서버에 다시 로그인하세요. 도커가 준비되었습니다!
서버가 다시 시작될 때 아래 명령을 사용하여 도커 컨테이너를 시작할 수 있습니다.

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

지금은 docker 컨테이너로 충분합니다.

Docker Compose 파일 만들기

docker compose 파일을 1개 생성하겠습니다.

nano docker-compose.yaml

이 yaml 코드를 붙여넣으세요.

version: '3.1'

services:
  nginx:
    # we use the latest of nginx as base
    image: nginx:latest
    restart: always
    # we expose port 80 and 443 to the public as our reverse proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      # we link volume from host for nginx configuration
      - './nginx.conf:/etc/nginx/conf.d/nginx.conf'
      # we link volume from host for nginx certs
      - './certs:/etc/nginx/certs'
      # we link also timezone from the host
      - '/etc/localtime:/etc/localtime:ro'
      - '/etc/timezone:/etc/timezone:ro'
    depends_on:
      # we will wait until server redmine is ready
      - redmine
  redmine:
    # we use redmine from dockerhub as base
    image: redmine
    restart: always
    volumes:
      # we link redmine data to our local storage, so it will persistent when
      # the service redmine restarted
      - 'redmine_data:/usr/src/redmine/files'
      # we link redmine plugin also from the host
      - '/home/bkn/redmine_plugins:/usr/src/redmine/plugins'
      # we link also timezone from the host
      - '/etc/localtime:/etc/localtime:ro'
      - '/etc/timezone:/etc/timezone:ro'
    # we don't expose port on this service because nginx service will do
    # default port redmine expose internally is 3000
    #ports:
      #- 3000:3000
      #- 444:3000
    environment:
      # we create some env for redmine
      REDMINE_DB_MYSQL: db
      REDMINE_DB_PORT: 3306
      REDMINE_DB_DATABASE: redmine_db
      REDMINE_DB_USERNAME: redmine
      REDMINE_DB_PASSWORD: my_p@ssword
      REDMINE_SECRET_KEY_BASE: G75eddsecretkey
    # we will wait until db service is ready
    depends_on:
      - db
  db:
    # we use mysql server for redmine database
    image: mysql:8.0
    restart: always
    volumes:
      # we also link the database storage with volume we created below
      - 'mysql_data:/var/lib/mysql'
    environment:
      # we create some env for mysql
      MYSQL_USER: redmine
      MYSQL_PASSWORD: my_p@ssword
      MYSQL_RANDOM_ROOT_PASSWORD: 1
      MYSQL_ROOT_PASSWORD: JRFFHT534rth4u3!@#
      MYSQL_DATABASE: redmine_db

volumes:
  # we create two volume used by redmine and our database
  mysql_data:
    driver: local
  redmine_data:
    driver: local

다음으로 docker-compose 파일과 동일한 폴더에 nginx 구성 파일을 생성합니다

nano nginx/nginx.conf
server {
        listen 80;
        server_name proman.withenri.tech;
        location / {
            proxy_pass http://henri_redmine_1:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
server {
        listen 443 ssl;
        server_name proman.withenri.tech;
        ssl_certificate /etc/nginx/certs/withenri.tech_chained.crt;
        ssl_certificate_key /etc/nginx/certs/withenri.tech.key;
        location / {
            proxy_pass http://henri_redmine_1:3000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

certs라는 폴더를 만든 다음 바로 거기에 인증서를 배치하세요.

컨테이너 생성

명령어를 사용하여 docker compose 파일을 실행해 보겠습니다

docker-compose up -d

이 docker compose 파일을 실행하면 네트워크가 자동으로 생성되고 해당 네트워크에 세 가지 서비스(nginx, redmine, db)가 연결됩니다.

다음 명령을 사용하여 컨테이너를 확인할 수 있습니다.

docker ps -a

그런 다음 https 연결을 사용하여 포트 80 및 포트 443을 사용하여 브라우저에서 Redmine 애플리케이션을 테스트합니다. Redmine 애플리케이션에 로그인하려면 사용자 'admin'과 비밀번호 'admin'을 사용하세요.

이 글은 기본적으로 vps에 직접 설치했을 때와 동일한 결과가 나오니 이 글을 참고하세요.

이 기사가 도움이 되기를 바랍니다!

위 내용은 Docker 컨테이너에 Redmine 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.