轻松部署 Artifactory(不推荐款)
在 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
总结
没有特殊要求,不推荐。
欢迎关注我的微信公众号,可以看看我郑再打工每天都在折腾什么。
