1. docker에 코드와 일치하는 java버전 설치하기
2. docker에 코드와 일치하는 tomcat버전 설치하기
3. WORKDIR 설정해서 자바설정 파일 옮기기
docker를 설치했다는 가정하에 linux에서 workdir를 하나 설정하여 java파일을 옮겨놓는다.
4. dockerfile을 설정하기
- Dockerfile : Container를 어떻게 만들어야 할지에 대한 설명서
- Docker Image : 어플리케이션을 실행하는 데에 필요한 코드, 런타임 환경, 시스템 라이브러리 등 모든 셋팅들을 포함하는 것
- Container : Docker Image를 고립된 환경에 실행시킬 수 있는 것
💡 Docker Container를 만들기 위해서는 Dockerfile를 이용해 Docker Image를 만들고 Container를 구동할 수 있다.
위의 1~3번 과정을 다 마쳤다면 WORKDIR에 dockerfile을 넣어줘야 한다.
# Use official OpenJDK 8 image as base
FROM openjdk:8-jdk-alpine
# Set environment variables
ENV TOMCAT_VERSION 8.5.70
ENV CATALINA_HOME /usr/local/tomcat
# Install required packages
RUN apk add --no-cache curl tar
# Download and extract Apache Tomcat
RUN curl -O <https://archive.apache.org/dist/tomcat/tomcat-8/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz> && \\
tar xvf apache-tomcat-$TOMCAT_VERSION.tar.gz && \\
rm apache-tomcat-$TOMCAT_VERSION.tar.gz && \\
mv apache-tomcat-$TOMCAT_VERSION $CATALINA_HOME
# Remove default webapps
RUN rm -rf $CATALINA_HOME/webapps/*
# Copy your Java web application (WAR file) into the webapps directory
COPY your-web-app.war $CATALINA_HOME/webapps/ROOT.war
# Expose the default Tomcat port
EXPOSE 8080
# Start Tomcat
CMD ["$CATALINA_HOME/bin/catalina.sh", "run"]
위는 기본 Dockerfile이다.
# Use official OpenJDK 8 image as base
FROM openjdk:8-jdk-alpine
# Set environment variables
ENV TOMCAT_VERSION 8.5.70
ENV CATALINA_HOME /apache-tomcat-8.5.70
# Install required packages
RUN apk add --no-cache curl tar
# Download and extract Apache Tomcat
RUN curl -O <https://archive.apache.org/dist/tomcat/tomcat-8/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz> && \\
tar xvf apache-tomcat-$TOMCAT_VERSION.tar.gz && \\
rm apache-tomcat-$TOMCAT_VERSION.tar.gz && \\
mv apache-tomcat-$TOMCAT_VERSION $CATALINA_HOME
# Remove default webapps
RUN rm -rf $CATALINA_HOME/webapps/*
# Copy your Java web application (WAR file) into the webapps directory
COPY LDMS-1.0.0.war $CATALINA_HOME/webapps/ROOT.war
# Expose the default Tomcat port
EXPOSE 8080
# Start Tomcat
CMD ["$CATALINA_HOME/bin/catalina.sh", "run"]
위가 기본 Dockerfile을 적용하여 작성한 자바 도커파일이다.
- dockerfile에서 작성한 환경변수 톰캣 버전과 일치하는지를 확인한다.
- COPY LDMS-1.0.0.war $CATALINA_HOME/webapps/ROOT.war : 설정한 폴더에 제대로 깔려있는지 확인한다.
- ["$CATALINA_HOME/bin/catalina.sh", "run"] : 해당 폴더에서 catalina.sh파일이 있는지 확인한다.
Dockerfile은 제일 빈번하게 변경될 수 있는 것을 마지막에 작성해야 한다. 가장 나중에 작성한 명령어가 레이어 제일 위쪽으로 위치하기 때문에 이미지를 만들어 준다. 후에 소스코드가 변경되었을 때, 최상단의 레이어만 업데이트해준다. 나머지 레이어는 다시 만들지 않아도 되기 때문에 이미지를 만드는 시간을 단축하고 효율성을 높일 수 있다.
5. docker build하기
docker build <path> -t <image_name>:<tag> --push
위의 command를 사용하여 dockerfile을 구동하여 필요한 파일을 설치한다.
- —push : 이미지를 쓰기 위해서는 build하고 나서 push를 해야 되는데 이 과정을 빠르게 하기 위해서 —push하여 빠르게 push해준다.
dockerfile 빌드시에 나는 오류들은 도커파일에 써진 것들이므로 이에 맞게 해결해준다.
6. docker images 확인하기
docker images
명령어를 통하여 위에서 빌드한 images를 확인할 수 있다. 내가 설정한 image_name으로 확인할 수 있다. 그리고 나서 image id를 복사해놓는다.
7. 컨테이너 실행시키기
docker run -d --restart always -p 3000:8080 --name="<지정하고자 하는 이름>" <images_id>
컨테이너를 실행시키는 명령어로, 아까 위에서 복사한 이미지 id를 넣어준다.
- -d : - 백그라운드 실행
- -p <hostport>:<containerport> : 웹 서버를 구동하는데 호스트의 3000포트와 컨테이너 8080포트와 연결해준다.
- —restart always : 컨테이너가 한번 돌아가고 다운시키면 계속 돌아가지 않기 때문에 명령어를 입력하여 컨테이너가 계속 돌아가게 해준다.
docker ps
위의 명령어를 사용하여 컨테이너가 잘 돌아가는지 확인해준다.
<지정한 포트>:3000로 사이트를 들어가보면 사이트가 제대로 돌아갔는지 확인이 가능하다.
👇🏻 참고사이트
http://www.wearedev.net/209?PHPSESSID=9e405022834f61104dc69dbaa2474e47
https://olive-devlog.tistory.com/3
https://javacan.tistory.com/entry/docker-start-2-running-container