docker, nexus

이상민·2023년 4월 24일
0

docker

목록 보기
15/19

설치 및 설정

docker

$ sudo apt update

$ sudo apt install -y docker.io

$ sudo chmod 666 /var/run/docker.sock

java

$ sudo apt install -y default-jdk

awscli

$ sudo apt install -y awscli

aws configure

$ aws configure
AWS Access Key ID [None]: 
AWS Secret Access Key [None]: 
Default region name [None]: ap-northeast-1
Default output format [None]: json

IAM에서 생성한 Access Key ID, Secret Access Key를 입력

Nexus

$ docker run --name nexus -d -p 8081:8081 -v ~/nexus-data:/nexus-data -u root sonatype/nexus3

$ docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS          PORTS                                       NAMES
89c401ebecf0   sonatype/nexus3   "/opt/sonatype/nexus…"   27 seconds ago   Up 25 seconds   0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   nexus

web ui

web ui: http://퍼블릭 DNS:8081/
8081 포트로 접속

Sign in에서 비밀번호가 필요

비밀번호 확인

$ docker exec -it nexus bash -c "cat /nexus-data/admin.password"

login

초기 ID는 admin, 비밀번호는 위에서 찾은 비밀번호로 sign in
수정된 비밀번호: !admin00
Enable anonymous access 체크: 보안상의 이슈가 있을 수 있음

User 추가


설정 -> Users -> Create local user

ID: test
First name: test
Last name: test
Email: test@test.com
password: !test00
Status: Active
Roles: nx-admin

이후 로그아웃 후 test 계정으로 로그인

Bolob Store 생성


설정 -> Blob Stores -> Create Blob Store

Type: S3
Name: test-docker-nexus-repository
Region: ap-northeast-1
Bucket: test-docker-nexus-repository -> test-docker-nexus-repository-skybluelee
Prefix: test
Access Key ID, Secret Access Key는 IAM에서 생성한 것 사용
이 외에는 default 그대로 저장

Bucket 이름은 겹치는 이름이 나와서는 안된다고 함.

버킷이 생성된 것을 aws s3에서 확인

nexus에서 생성된 파일이 test 디렉토리 안으로 들어옴

Repository 생성


설정 -> Repositories -> Create repository -> maven2 (proxy)

Name: test-docker-nexus-repository
Version policy: Mixed
Layout policy: Permissive
Remote Storage: https://repo1.maven.org/maven2/
Blob Store: test-docker-nexus-repository
이외에는 default로 create repository

실습

gradle build

ubuntu에서 실행

maven central

$ ls
build.gradle  gradle/  gradlew*  gradlew.bat  main/  settings.gradle  src/  wrapper/

$ pwd
/home/ubuntu/docker/Part2_Docker/Chapter03/3-nexus-docker
$ vi build.gradle

...
repositories {
  mavenCentral()
//    maven {
//        url "http://ec2-52-192-67-5.ap-northeast-1.compute.amazonaws.com:8081/repository/test-docker-nexus-repository/"
//        allowInsecureProtocol true
//    }

}
...
/docker/Part2_Docker/Chapter03/3-nexus-docker$ gradle clean build --info

gradle이 설치가 되어 있어야 함
maven central -> artifact -> build -> 3분30초

maven

$ vi build.gradle

...
repositories {
//  mavenCentral()
    maven {
        url "http://ec2-52-192-67-5.ap-northeast-1.compute.amazonaws.com:8081/repository/test-docker-nexus-repository/"
        allowInsecureProtocol true
    }

}
...
$ cd ~/.gradle/caches

$ rm -rf *

정확한 시간 비교를 위한 캐시 삭제

$ gradle clean build --info

1분51초

Nexus Repository


Blob Count와 Total Size가 증가

S3


기존 디렉토리 내부에 content 폴더가 생성되었고 내부에 볼륨 별로 파일이 존재

jib

gradle build

$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin .dkr.ecr.ap-northeast-1.amazonaws.com

ubuntu에 ecr 로그인

$ vi build.gradle

...
jib {
    from {
        image = 'adoptopenjdk/openjdk11:alpine-jre'
    }
    to {
        image = '.dkr.ecr.ap-northeast-1.amazonaws.com/test'
        tags = ['latest']
    }
...
$ gradle jib --console=plain

ecr 확인

$ docker run -d -p 8080:8080 -t .dkr.ecr.ap-northeast-1.amazonaws.com/test:latest

이미지 다운로드

$ docker images
REPOSITORY                                               TAG       IMAGE ID       CREATED         SIZE
235050266187.dkr.ecr.ap-northeast-1.amazonaws.com/test   latest    6f9b168d2175   4 minutes ago   188MB
sonatype/nexus3                                          latest    2aaf6c0ae473   5 days ago      549MB

0개의 댓글