1、前言
JFrog Artifactory 是目前全球唯一的支持所有开发语言,功能最强大的二进制制品仓库。
2、系统平台
操作系统 : Ubuntu 22.04.4 LTS (GNU/Linux 6.5.0-26-generic x86_64)
3、安装依赖&拉取镜像
使用 OSS 社区版本,官方有详细说明介绍。
完整的执行指令如下图所示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# 安装 podman $ sudo apt install podman # 创建一个低权限用户,尽量不要使用root用户,身份操作podman,降低安全风险 $ sudo adduser podman # 允许用户下的容器在系统启动的时候启动服务 $ sudo loginctl enable-linger podman $ export JFROG_HOME=/home/podman/.dockers/jfrogoss # 准备本地目录映射 $ sudo mkdir -p $JFROG_HOME/var/etc/ $ cd $JFROG_HOME/var/etc/ $ sudo touch ./system.yaml $ sudo chown -R podman $JFROG_HOME $ sudo chown -R 1030:1030 $JFROG_HOME/var $ sudo chmod -R 777 $JFROG_HOME/var # 手工拉去部分镜像,或者可以在 /etc/containers/registries.conf 配置下载服务器,可省略前面的服务器 releases-docker.jfrog.io $ podman pull releases-docker.jfrog.io/jfrog/artifactory-oss |
执行上面的指令后,可以看到 releases-docker.jfrog.io/jfrog/artifactory-oss 镜像下载进度。
4、启动配置
首先要创建本地的数据目录,然后启动的时候挂载本地创建的数据目录即可。
执行启动指令:
1 2 3 4 5 6 7 8 9 10 11 12 |
# 为 Docker 容器分配内存资源。可以使用 --memory 参数设置容器可以使用的内存量,使用 --memory-swap 参数限制交换空间的大小 $ podman run --name jfrogoss --cpus=2 --memory=2g --memory-swap=4g -d -v /home/podman/.dockers/jfrogoss/var:/var/opt/jfrog/artifactory -p 18081:8081 -p 18082:8082 releases-docker.jfrog.io/jfrog/artifactory-oss # 查看该容器 $ podman ps # 如果需要进入容器查看执行情况,参考如下命令 # podman exec -it jfrogoss bash # 每次都启动新容器方式创建servcie //--new参数,每次启动都删除旧容器,启动一个新容器 $ podman generate systemd --restart-policy=always -n --new -f jfrogoss |
查看进程及IP跟端口号,启动一切正常了,打开浏览器访问系统看看效果。
查看启动文件:
1 |
$ cat container-jfrogoss.service |
内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# container-jfrogoss.service # autogenerated by Podman 3.4.4 # Sat Mar 30 19:04:05 CST 2024 [Unit] Description=Podman container-jfrogoss.service Documentation=man:podman-generate-systemd(1) Wants=network-online.target After=network-online.target RequiresMountsFor=%t/containers [Service] Environment=PODMAN_SYSTEMD_UNIT=%n Restart=always TimeoutStopSec=70 ExecStartPre=/bin/rm -f %t/%n.ctr-id ExecStart=/usr/bin/podman run --cidfile=%t/%n.ctr-id --cgroups=no-conmon --rm --sdnotify=conmon --replace --name jfrogoss --cpus=2 --memory=2g --memory-swap=4g -d -v /home/podman/.dockers/jfrogoss/var:/var/opt/jfrog/artifactory -p 18081:8081 -p 18082:8082 releases-docker.jfrog.io/jfrog/artifactory-oss ExecStop=/usr/bin/podman stop --ignore --cidfile=%t/%n.ctr-id ExecStopPost=/usr/bin/podman rm -f --ignore --cidfile=%t/%n.ctr-id Type=notify NotifyAccess=all [Install] WantedBy=default.target |
需要额外注意的一个地方是,给出的路径必须是完整路径 “/home/podman/.dockers/jfrogoss”,不能是 “~/.dockers/jfrogoss”,Systemd不能正确展开 “~” ,导致路径找不到,从而在启动的时候失败,报告错误代码 125 。
Systemd 配置,开机/重启自动启动服务:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# 切换到刚刚创建的低权限用户 ,注意,必须使用 su - user 的方式切换 # 如果使用 su user 切换会导致环境变量被带到新用户,导致执行报错 # ERRO[0000] XDG_RUNTIME_DIR directory "/run/user/1000" is not owned by the current user $ su - podman # 保存到 ~/.config/systemd/user/ $ mkdir .config $ mkdir .config/systemd $ mkdir .config/systemd/user $ mv container-jfrogoss.service ~/.config/systemd/user/ # 以当前用户身份刷新配置文件,让其生效 $ systemctl --user daemon-reload # 设置容器开机自启,并且现在启动 $ systemctl --user enable --now ~/.config/systemd/user/container-jfrogoss.service # 如果需要进入容器查看执行情况,参考如下命令 # podman exec -it jfrogoss bash # 测试,重启系统,观察是否能开机自动启动 $ sudo reboot # 启动或重启服务 # systemctl --user start container-jfrogoss.service # systemctl --user restart container-jfrogoss.service # 如果启动失败,观察服务日志 # sudo journalctl -f |
5、访问、登录
Access Artifactory from your browser at:
http://SERVER_HOSTNAME:18082/ui/
For example, on your local machine:
http://localhost:18082/ui/
默认用户名:admin, 密码: password。
启用匿名访问:
Maven服务器配置
客户端配置 http://SERVER_HOSTNAME:18082/artifactory/maven-remote/
参考链接
- Docker 安装最新的 JFrog Artifactory 制品仓库
- JFrog Container Registry(JCR)社区版(开源版)安装,并配置docker registry和yum repo
- JFrog Artifactory发行版差异及选择
- JFrog Installation & Setup Documentation > Install> Installing Artifactory > Install Artifactory single node with Docker
- 使用 Docker 部署 Artifactory
- How to set up a Private, Remote and Virtual Maven/Gradle Registry
- Artifactory搭建本地maven仓库
- Artifactory权限管理
- JFrog Artifactory创建远程仓库及私库
- Artifactory as a Caching Mechanism for Package Managers