$ sudo apt update
$ sudo apt install -y docker.io
$ sudo chmod 666 /var/run/docker.sock
$ sudo apt install -y default-jdk
$ sudo apt install -y awscli
$ 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를 입력
$ 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: http://퍼블릭 DNS:8081/
8081 포트로 접속
Sign in에서 비밀번호가 필요
$ docker exec -it nexus bash -c "cat /nexus-data/admin.password"
초기 ID는 admin, 비밀번호는 위에서 찾은 비밀번호로 sign in
수정된 비밀번호: !admin00
Enable anonymous access 체크: 보안상의 이슈가 있을 수 있음
설정 -> Users -> Create local user
ID: test
First name: test
Last name: test
Email: test@test.com
password: !test00
Status: Active
Roles: nx-admin
이후 로그아웃 후 test 계정으로 로그인
설정 -> 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 디렉토리 안으로 들어옴
설정 -> 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
ubuntu에서 실행
$ 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초
$ 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초
Blob Count와 Total Size가 증가
기존 디렉토리 내부에 content 폴더가 생성되었고 내부에 볼륨 별로 파일이 존재
$ 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
$ 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