【nexus】根据nexus官方安装包构建 ARM nexus镜像

一、实验背景

我们使用nexus作为项目中docker镜像库,现在服务器要切ARM,但是nexus官方并不提供ARM版本的docker镜像。

我们知道,nexus本质上是一个java服务,只需要使用ARM架构的基础镜像和ARM架构的jre,然后将nexus的装包打进去,就能构建一个ARM架构的nexus 镜像。

鉴于手头没有ARM架构的服务器,我们有x86_64 的CentOS7.5  模拟构建,在ARM服务器上的实现思路是一样!


二、实验环境


操作系统: CentOS7.5

IP:192.168.1.100

nexus 安装包:nexus-3.16.0-01-unix.tar.gz

jre安装包:jre-8u212-linux-x64.tar.gz



三、生成镜像构建文件


在宿主机

# useradd  nexus

# java -version


#  tar  -zxf    nexus-3.16.0-01-unix.tar.gz 

#  vim nexus-3.16.0-01/bin/nexus.rc


# ./nexus-3.16.0-01/bin/nexus  start

#  ss -tan  | grep  8081

浏览器访问: http://xx.xx.xx.xx:8081

# ./nexus-3.16.0-01/bin/nexus stop

#  tar -zcf nexus.tar.gz  nexus-3.16.0-01  sonatype-work


# cat  Dockerfile

#####################################################

FROM centos:centos7.5.1804

ENV NEXUS_VERSION="3.16.0-01" \

    NEXUS_BASE="/opt/nexus" \

    JRE_VERSION="8u212"

RUN groupadd -g 1000  nexus && \

    useradd -r -u 1000 -g 1000 -m -c "Nexus Repository Manager" -d ${NEXUS_BASE} -s /bin/false nexus && \

    mkdir -p ${NEXUS_BASE}

ADD jre-${JRE_VERSION}-linux-x64.tar.gz /usr/local/

COPY nexus.tar.gz /opt

COPY start-nexus-repository-manager.sh  /opt

RUN chown -R nexus:nexus ${NEXUS_BASE} /opt/start-nexus-repository-manager.sh

VOLUME ${NEXUS_BASE}

EXPOSE  8081 8443

USER nexus

CMD ["sh", "-c", "/opt/start-nexus-repository-manager.sh"]

###################################################################



# cat start-nexus-repository-manager.sh

###################################

#!/bin/bash

umask 0027

JAVA_HOME="/usr/local/jre1.8.0_212"

PATH=$JAVA_HOME/bin:$PATH

nexus_base="/opt/nexus"

if [ -z "$(ls -A ${nexus_base})" ]; then

  cd /opt

  tar -zxf nexus.tar.gz -C ${nexus_base}

  chown -R nexus:nexus ${nexus_base}

  rm -rf nexus.tar.gz

fi

cd ${nexus_base}/nexus-3.16.0-01/bin

exec ./nexus run

#######################################



四、构建镜像


#  docker build  -f Dockerfile  -t nexus:3.16.0-01 .


# mkdir  /opt/nexus 

# chown  -R  1000:1000  /opt/nexus


#  docker run  -it  -d   --name  nexus    -v /opt/nexus:/opt/nexus  -p 8081:8081    nexus:3.16.0-01

# docker logs  -f  nexus 


# ss  -tan  | grep  8081

#  docker  rm  -f  nexus 


五、将nexus服务注册成系统服务


#  vim  /etc/systemd/system/nexus.service

#######################################################

[Unit]

Description=Nexus

Requires=docker.service

[Service]

ExecStartPre=-/usr/bin/docker rm -f nexus

ExecStart=/usr/bin/docker run \

    --name nexus \

    --ulimit nofile=65536:65536 \

    -p 8081:8081 \

    -p 2020:2020 \

    -v /opt/nexus:

/opt/nexus \

    nexus:3.16.0-01

ExecStop=/usr/bin/docker stop nexus

LimitNOFILE=65535

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

[Install]

WantedBy=multi-user.target

#######################################################



# systemctl  daemon-reload

# systemctl  start nexus

# systemctl  enable  nexus

# systemctl  status  nexus


浏览器访问:http:/xx.xx.xx.xx:8081



六、参考 


nexus镜像的安全加固

https://www.jianshu.com/p/54b460724d95


用nexus3.5搭建docker私有仓库

https://www.jianshu.com/p/7a7db54a538f


用nexus3.x 官方镜像搭建docker私有镜像仓库

https://www.jianshu.com/p/86e573f18df3


Nexus 3.x的三种docker仓库

https://www.jianshu.com/p/ff8bd2505480

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容