IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    轻松部署 Artifactory(不推荐款)

    ysicing (i@ysicing.me)发表于 2025-06-06 19:24:44
    love 0

    在 DevOps 实践中,软件包管理是不可或缺的一环。JFrog Artifactory 作为一款强大的制品管理工具,广泛应用于存储和管理二进制文件。本文简单介绍如何部署 Artifactory 开源版。

    主要有客户需要部署这个,简单研究一下,上次用这个还是 4 年前了,新版本部署坑有点多,没老版本丝滑。简单说不如 Nexus,有兴趣的可以看看我之前写的私有化部署 Nexus3 镜像源

    镜像

    镜像有点点大

    docker pull releases-docker.jfrog.io/jfrog/artifactory-oss:7.111.8
    # 国内
    docker pull ccr.ccs.tencentyun.com/k7scn/artifactory-oss:7.111.8
    

    部署

    • docker-compose.yaml
    services:
      traefik:
        image: traefik:v3.4
        container_name: traefik
        networks:
          - ysicing-net
        command:
          - "--api=true"
          - "--api.insecure=true"
          - "--api.dashboard=true"
          - "--providers.docker=true"
          - "--providers.docker.exposedbydefault=false"
          - "--entrypoints.http.address=:80"
          - "--providers.docker.network=ysicing-net"
          - "--log.level=INFO"
          - "--accesslog=true"
        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.traefik-dashboard.entrypoints=http"
          - "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.192.168.23.16.sslip.io`)"
          - "traefik.http.routers.traefik-dashboard.service=dashboard@internal"
          - "traefik.http.routers.traefik-dashboard-api.entrypoints=http"
          - "traefik.http.routers.traefik-dashboard-api.rule=Host(`traefik.192.168.23.16.sslip.io`) && PathPrefix(`/api`)"
          - "traefik.http.routers.traefik-dashboard-api.service=api@internal"
          - "traefik.http.middlewares.gzip.compress=true"
          - "traefik.http.routers.traefik-dashboard.middlewares=gzip@docker"
        ports:
          - "80:80"
          - "8080:8080"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock:ro
        restart: always
    
      artifactorydb:
        image: docker.io/bitnami/postgresql:15
        # image: ccr.ccs.tencentyun.com/k7scn/postgresql:15
        container_name: artifactorydb
        restart: always
        networks:
          - ysicing-net
        volumes:
          - './postgresql:/bitnami/postgresql'
        environment:
          - POSTGRESQL_USERNAME=bn_artifactory
          - POSTGRESQL_DATABASE=bitnami_artifactory
          - POSTGRESQL_PASSWORD=bitnami
    
      artifactory:
        image: releases-docker.jfrog.io/jfrog/artifactory-oss:7.111.8
        # image: ccr.ccs.tencentyun.com/k7scn/artifactory-oss:7.111.8
        container_name: artifactory
        depends_on:
          - artifactorydb
        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.artifactory.rule=Host(`artifactory.192.168.23.16.sslip.io`)"
          - "traefik.http.routers.artifactory.service=artifactory"
          - "traefik.http.services.artifactory.loadbalancer.server.port=8081"
          - "traefik.http.routers.artifactory-ui.service=artifactory-ui"
          - "traefik.http.routers.artifactory-ui.rule=Host(`artifactory-ui.192.168.23.16.sslip.io`)"
          - "traefik.http.services.artifactory-ui.loadbalancer.server.port=8082"
        networks:
          - ysicing-net
        environment:
          - EXTRA_JAVA_OPTIONS=-Dartifactory.home=/var/opt/jfrog/artifactory
          - JF_ROUTER_ENTRYPOINTS_EXTERNALPORT=8082
        # ports:
        #   - 8082:8082 # for router communication
        #   - 8081:8081 # for artifactory communication
        volumes:
          - artifactory_data:/var/opt/jfrog/artifactory
          - /etc/localtime:/etc/localtime:ro
          - ./system.yaml:/opt/jfrog/artifactory/var/etc/system.yaml
        restart: always
        logging:
          driver: json-file
          options:
            max-size: "50m"
            max-file: "10"
        ulimits:
          nproc: 65535
          nofile:
            soft: 32000
            hard: 40000
    
    volumes:
      artifactory_data:
        driver: local
    
    networks:
      ysicing-net:
        name: ysicing-net
        driver: bridge
    

    默认使用 pg 数据库,方便些

    创建配置文件 system.yaml

    touch system.yaml
    

    创建完配置文件,生成相关配置

    shared:
        database:
            type: postgresql
            driver: org.postgresql.Driver
            url: jdbc:postgresql://artifactorydb:5432/bitnami_artifactory
            username: bn_artifactory
            password: bitnami
    

    修改文件权限

    chown -R 1030:1030 system.yaml
    chmod 644  system.yaml
    

    运行启动

    服务非常吃资源,机器配置太低不推荐。

    docker compose up -d
    

    访问 Artifactory

    地址:artifactory-ui.192.168.23.16.sslip.io
    默认的账号密码 | 默认用户名 admin,默认密码 password

    总结

    没有特殊要求,不推荐。


    欢迎关注我的微信公众号,可以看看我郑再打工每天都在折腾什么。



沪ICP备19023445号-2号
友情链接