Docker 컨테이너를 작성한 후 레지스트리에 푸시해야 합니다. 여기서
IBM Cloud Private이 이 컨테이너를 참조합니다.
이 태스크 정보
Docker 허브에서 공식 WebSphere® Application Server for Developers Liberty 이미지를 사용하십시오.
이 저장소에서 여러 이미지를 사용할 수 있습니다. beta 태그가 있는 이미지에는
월별 베타에 대한 설치 아카이브 컨텐츠가 들어 있습니다. 기타 이미지는 모두 일반적으로 가장 최근에
사용 가능한 수정팩을 기반으로 합니다.
kernel 이미지에는
Liberty 커널만 있고 추가 런타임 기능은
없습니다. 이 이미지 또는 특정 애플리케이션에 필요한 기능만 들어 있는 사용자 빌드
이미지를 사용할 수 있습니다. 예를 들어, 다음 Dockerfile 스니펫의 예를 보면
이 이미지로 시작하고, 애플리케이션에서 필요한 기능이 나열된
server.xml 파일에서 복사한 후
installUtility 명령을 사용하여 이 기능을 온라인 저장소에서
다운로드합니다.
FROM websphere-liberty:kernel
COPY server.xml /config/
RUN installUtility install --acceptLicense defaultServer
webProfile6 이미지에는 Java EE6 Web
Profile 준수에 필요한 기능이 들어 있습니다. 또한 런타임 JAR 파일을 사용하여 다운로드할 수 있는 기능에 맞게
컨텐츠를 조정하기 위해 더 많은 기능(특히 OSGi 애플리케이션에 필요한 기능)을 가져올 수도 있습니다.
webProfile7 이미지에는 Java EE7 Web
Profile 준수에 필요한 기능이 들어 있습니다. javaee7 이미지는 이 이미지를 확장시켜서
Java EE7 Full Platform 준수에 필요한 기능을 추가합니다. 또한 javaee7 이미지는
최신 태그가 지정되어 있습니다.
또한
webProfile6,
webProfile7 및
javaee7 이미지 모두에는
일반적인 프로덕션 시나리오에 사용되는 공통 기능이 들어 있습니다.
이러한 공통 기능을 구성하는 기능은 다음과 같습니다.
- appSecurity-2.0
- collectiveMember-1.0
- localConnector-1.0
- ldapRegistry-3.0
- monitor-1.0
- requestTiming-1.0
- restConnector-1.0
- sessionDatabase-1.0
- 컨테이너 외부로부터의 HTTP 연결을 허용하려면 서버 스탠자 내부에 다음 요소를 추가하여
server.xml 파일을 업데이트하십시오.
<httpEndpoint host="*" httpPort="9080" httpsPort="-1"/>
- sample-one-container와 같은 Eclipse 프로젝트를 작성하십시오. 이 프로젝트에
server.xml 파일의 WAR 파일 및 Dockerfile을
포함시키십시오. 다음 Dockerfile
예를 참조하십시오.
FROM library/websphere-liberty:webProfile7
Add sample-one.war /opt/ibm/wlp/usr/servers/defaultServer/apps
COPY server.xml /opt/ibm/wlp/usr/servers/defaultServer/
ENV LICENSE accept
이 Dockerfile에서, WAR 파일을 drop-ins 디렉토리(여기에서 애플리케이션을 설치하고 서버를 시작함)로
복사하여 Liberty 이미지가
사용자 정의됩니다. server.xml은 컨테이너 외부에서 HTTP 연결을 허용하도록
수정된 server.xml로 대체됩니다. 라이센스 또한 허용됩니다.
- 이 프로젝트에서 server.xml과 WAR 파일을 모두 수집하고
Docker 빌드를 실행하여 Docker 이미지를 작성할 수 있도록 준비하십시오.
- 명령행을 열어 현재 디렉토리를 sample-one-container 프로젝트 디렉토리로 설정한 후
Docker 빌드를 실행하십시오. 이는 사용자 정의 Docker 빌드이며, Liberty Docker 허브 이미지로 시작하고 애플리케이션과
해당 server.xml 구성을 추가합니다. 다음 예는 성공적인 빌드 실행을 보여줍니다.
arthurs-mbp:docker-hub arthur$ docker build .
Sending build context to Docker daemon 957.4kB
Step 1/4 : FROM websphere-liberty:kernel
---> 3fd79ff460ff
Step 2/4 : COPY server.xml /config/
---> Using cache
---> a0e43965425f
Step 3/4 : COPY airlines.war /config/apps/
---> Using cache
---> dfc6aee86df5
Step 4/4 : RUN installUtility install --acceptLicense defaultServer
---> Using cache
---> d5ab21decab4
Successfully built d5ab21decab4
arthurs-mbp:docker-hub arthur$
- Docker 사용자 ID와 비밀번호로 로그인하십시오. Docker 허브에 로그온하면 다음 예와 유사한 출력이 표시됩니다.
arthurs-mbp:docker-hub arthur$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: arthurdm
Password:
Login Succeeded
arthurs-mbp:docker-hub arthur$
- 빌드가 끝나면 이미지에 대한 태그를 작성하십시오. 작성된 태그는 이 이미지가 레지스트리에서 참조되는 이름을 나타냅니다. 다음 예를 참조하십시오.
arthurs-mbp:docker-hub arthur$ docker tag d5ab21decab4 arthurdm/websphere-liberty
- 이미지가 다운로드 및 실행될 수 있도록 Docker 허브 저장소에 푸시하여 공개하십시오. 다음 예를 참조하십시오.
arthurs-mbp:docker-hub arthur$ docker push arthurdm/websphere-liberty
The push refers to a repository [docker.io/arthurdm/websphere-liberty]
c2eefa54fcc7: Layer already exists
09fa033b42e3: Layer already exists
753266ce94a2: Layer already exists
0a76debd7d35: Layer already exists
d86dd55017f1: Layer already exists
d5e2acba7cce: Layer already exists
eefb3f013a83: Layer already exists
28fca5e92849: Layer already exists
3e60706b7714: Layer already exists
1a39a1088d6e: Layer already exists
73e5d2de6e3e: Layer already exists
08f405d988e4: Layer already exists
511ddc11cf68: Layer already exists
a1a54d352248: Layer already exists
9d3227c1793b: Layer already exists
latest: digest: sha256:9e41f2a269360fbd0ff926434ab4df38cce49aa83442b1a38eaf13049cb164b2 size: 3453
arthurs-mbp:docker-hub arthur$
다음에 수행할 작업
애플리케이션을 저장소에 푸시하고 나면 이미지 arthurdm/websphere-liberty를 지정하여 IBM Cloud Private 환경에 애플리케이션을 설치하십시오. 이 설치는
Helm 차트를 통해 수행됩니다.