이 문서는 Docker Compose를 이용하여 Artifactory를 수동 설치하는 방법을 공유하기 위해 작성되었습니다. 

Manual 설치 시 사용자가 직접 Docker Compose 설정 파일(docker-compose.yml)을 작성하거나, 세부 설정을 직접 구성할 수 있습니다.


설치환경

  • Docker Compose : v2.27.0

  • Artifactory : artifactory-oss-7.90.5

  • PostgreSQL : 13


Docker 요구사항

Docker Compose를 사용하여 Artifactory를 설치할 때 Docker Compose v1.24 이상이 실행하려는 머신에 설치되어 있어야 합니다.


설치 파일 다운로드 및 압축 해제

아래 링크에 접속하여 녹색 화살표를 클릭해 Docker Compose를 다운로드합니다.


다운로드한 아카이브(.tar.gz 파일)의 압축을 해제한 후, 압축이 풀린 폴더로 이동합니다. 

tar -xvf jfrog-artifactory-pro-7.90.5-compose.tar.gz
cd artifactory-pro-7.90.5


docker-compose.yaml 파일 준비

‘template’폴더에서 docker-compose.yaml을 현재 위치로 복사합니다. 

cp templates/docker-compose.yaml .

template을 이용하여 PostgreSQL 또는 Nginx를 함께 설치할 수 있습니다.

‘template’폴더에서 적절한 Docker Compose 템플릿 파일을 복사하고 ‘docker-compose.yaml'로 이름을 변경합니다.

  • Artifactory + Postgres 설치
    cp templates/docker-compose-postgres.yaml ./docker-compose.yaml
  • Artifactory + Nginx 설치 
    cp templates/docker-compose-nginx.yaml ./docker-compose.yaml

‘.env’ 파일 업데이트

Artifactory의 데이터 디렉토리를 설정합니다. ($JFROG_HOME은 설치 경로를 나타내는 환경 변수로, 정확한 값을 입력해야 합니다.) 

ROOT_DATA_DIR = $JFROG_HOME /artifactory
##For example, /root/.jfrog/artifactory

.env’ 파일은 Docker Compose가 사용하는 환경 변수 파일로, 설치 및 업그레이드 중에 업데이트 됩니다.

이 파일을 수정할 때는 주의가 필요하며, 업그레이드 전에 백업을 하는 것이 좋습니다. (이 파일은 기본적으로 숨겨져 있을 수 있습니다.)


폴더 구조 생성 및 소유권 설정

$JFROG_HOME/artifactory 경로 아래에 다음과 같은 폴더 구조를 만듭니다. 

-- [1030     1030    ]  var
    |-- [1030     1030 ]  data
    |-- [1030     1030 ]  etc

ex) /root/.jfrog/artifactory 

mkdir -p /root/.jfrog/artifactory/var/data
mkdir -p /root/.jfrog/artifactory/var/etc


다음 명령어들을 실행하여 각 폴더의 소유권을 올바르게 설정합니다. 

chown -R 1030:1030 $JFROG_HOME/artifactory/var
chown -R 1030:1030 $JFROG_HOME/artifactory/var/data
chown -R 1030:1030 $JFROG_HOME/artifactory/var/etc

템플릿을 이용하여 PostgreSQL 또는 Nginx를 함께 설치할 경우 해당 이름의 폴더를 추가로 생성하고 소유권을 설정합니다. 

-- [1030     1030    ]  var
    |-- [1030     1030 ]  data
    |   |--   [104    107]    nginx                     - nginx를 추가할 경우 필수
    |   `--   [999    999]    postgres                  - postgres를 추가할 경우 필수
    |-- [1030     1030 ]  etc

ex) /root/.jfrog/artifactory 

mkdir -p /root/.jfrog/artifactory/var/data/nginx
mkdir -p /root/.jfrog/artifactory/var/data/postgres

폴더 소유권 설정 

chown -R 104:107 $JFROG_HOME/artifactory/var/data/nginx
chown -R 999:999 $JFROG_HOME/artifactory/var/data/postgres


호스트 ID, IP 설정

  • shared.node.id (호스트ID) : 노드나 인스턴스를 식별하는 고유한 ID입니다.

  • shared.node.ip (호스트IP) : 노드의 IP 주소로, 외부에서 해당 노드에 접근할 때 사용됩니다.

이 두 값이 system.yaml에 제대로 설정되어야 Docker 컨테이너가 다른 노드 및 서비스와 정상적으로 통신할 수 있습니다. 수동으로 설정하지 않으면, 컨테이너의 IP 주소가 자동으로 할당되어 외부 연결이 어려워질 수 있습니다.

‘template’폴더에 템플릿을 복사하여 system.yaml을 구성할 수 있습니다. (system.basic-template.yaml, system.full-template.yaml)

$ cp templates/system.basic-template.yaml $JFROG_HOME/artifactory/var/etc/system.yaml
$ vi system.yaml

shared:
  node: 
    id: test01
    ip: 192.168.0.1


외부 데이터 베이스 연동 (선택 사항)

 Artifactory에는 기본으로 내장된 Derby 데이터베이스가 제공됩니다.

그러나 운영 환경에서는 외부 PostgreSQL 데이터베이스를 사용할 것을 권장합니다.

system.yaml 파일을 사용하여 별도의 외부 데이터베이스 연결 설정을 구성할 수 있습니다.


system.yaml 파일에 database 정보를 입력합니다. 

  • allowNonPostgresql : JFrog Artifactory는 기본적으로 PostgreSQL 데이터베이스와 함께 사용하도록 설정되어 있습니다.
    하지만 다른 데이터베이스 (예: MySQL, Oracle 등)을 사용하고자 할 경우, 이 설정을 'true'로 변경해야 합니다. (default: false)

$ vi system.yaml

shared:
  ## Database Configuration
  database:
    ## To run Artifactory with any database other than PostgreSQL allowNonPostgresql set to true.
    #allowNonPostgresql: false

    ## One of mysql, oracle, mssql, postgresql, mariadb
    ## Default Embedded derby

    ## Example for postgresql
    type: postgresql
    driver: org.postgresql.Driver
    url: "jdbc:postgresql://<your db url, for example: localhost:5432>/artifactory"
    username: artifactory
    password: password


Artifactory 관리

Docker 기본 명령을 사용하여 Artifactory를 관리합니다. 

docker compose -p rt up -d
docker compose -p rt ps
docker compose -p rt down

아래 링크에 접속하여 제품 릴리즈 버전 번호를 확인할 수 있습니다.

Artifactory는 기본적으로 다음과 같은 외부 네트워크 포트를 사용합니다. 

  • 8081

  • 8082


Artifactory 로그 확인

다음 명령을 사용하여 Artifactory 로그를 확인합니다. 

docker compose -p rt logs


Artifactory 설정

Artifactory를 설정하기 위해 http://localhost:8082/ui/ 으로 접속합니다.

초기 계정 정보는 다음과 같습니다.

  • ID : admin

  • PW : password

  • 레이블 없음