ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring boot와 Docker
    카테고리 없음 2023. 4. 18. 12:31

    spring boot와 Docker

    일단 도커를 설치하자 설치 방법은 설치 리눅스(centos6.5) 기준이다. 일단 Spring boot 프로젝트를 만들자. 만드는법은 Spring boot 빠르게 시작해보자 혹은 Github example
    @SpringBootApplication
    @RestController
    public class SpringBootDockerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringBootDockerApplication.class, args);
        }
    
        @RequestMapping("/")
        public String hello(){
            return "Hello Spring boot docker!";
        }
    }
    
    메인 소스다. 간단하게 만들었다. 그리고 추가 할 부분은 src/main/dockerDockerfile 파일을 만든다.
    FROM java:8
    VOLUME /tmp
    ADD spring-boot-docker-0.0.1-SNAPSHOT.jar app.jar
    RUN bash -c touch /app.jar
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    
    추가하자. 다음은 maven 플러그인을 설정하자
    <properties>
        <docker.image.prefix>wonwoo</docker.image.prefix>
    </properties>
    
    ...
    
    
    <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>0.2.3</version>
        <configuration>
            <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
            <dockerDirectory>src/main/docker</dockerDirectory>
            <resources>
                <resource>
                    <targetPath>/</targetPath>
                    <directory>${project.build.directory}</directory>
                    <include>${project.build.finalName}.jar</include>
                </resource>
            </resources>
        </configuration>
    </plugin>
    
    그런다음에 빌드를하자 메이븐 기준이라...
    mvn package && java -jar target/spring-boot-docker-0.0.1-SNAPSHOT.jar
    #필자는 클라우드서버라 포트를 변경해야되서..
    #mvn package && java -Dserver.port=9000 -jar target/spring-boot-docker-0.0.1-SNAPSHOT.jar 
    
    웹브라우저를 열고 확인하자! Hello Spring boot docker! 정상적으로 되는걸 확인했으니 이제 도커를 빌드하자.
    mvn package docker:build
    
    그럼 아래와 같은 화면이 나올 것이다. 이미지를 생성하는듯하다. 자바도 pull하는듯 하다. 흠
    ....
    
    [INFO] Building image wonwoo/spring-boot-docker
    Step 0 : FROM java:8
    Pulling from java
    d8bd0657b25f: Extracting [======================>                            ] 23.07 MB/51.37 MB
    a582cd499e0f: Download complete 
    3c3e582d88fa: Download complete 
    5901462573ab: Download complete 
    87d3bfd91a40: Download complete 
    337c6b2193cb: Download complete 
    c9f473494918: Download complete 
    6d2585cde477: Download complete 
    c49cfc438d8b: Download complete 
    1d7d8f54c2b3: Download complete 
    5f59c75f3075: Download complete 
    7de249ebc2b5: Download complete 
    7e810ba21977: Downloading [===================>                               ] 51.89 MB/129.9 MB
    31e7de89e3f8: Download complete 
    
    Status: Downloaded newer image for java:8
    ---> 31e7de89e3f8
    Step 1 : VOLUME /tmp
    ---> Running in 22eb30aaef5d
    ---> 92198c129da9
    Removing intermediate container 22eb30aaef5d
    Step 2 : ADD spring-boot-docker-0.0.1-SNAPSHOT.jar app.jar
    ---> addd5f953ba5
    Removing intermediate container a4fea7ea6ed4
    Step 3 : RUN bash -c touch /app.jar
    ---> Running in f21125980342
    ---> 390d62487fa3
    Removing intermediate container f21125980342
    Step 4 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
    ---> Running in dc04d29c1616
    ---> 40ac0290f2de
    Removing intermediate container dc04d29c1616
    Successfully built 40ac0290f2de
    
    이미지도 생성 되었으니 실행해보자. 형식은 이렇다. docker run -p $HOSTPORT:$CONTAINERPORT -t $IMAGE
    docker run -p 8080:8080 -t wonwoo/spring-boot-docker
    #필자는 외부가 9000이라..
    #docker run -p 9000:8080 -t wonwoo/spring-boot-docker
    
    
    브라우저를 띄우면 성공적으로 됐다. 컨테이너를 한개 더 생성해보자.
    docker run -p 8081:8080 -t wonwoo/spring-boot-docker
    #docker run -p 9001:8080 -t wonwoo/spring-boot-docker
    
    브라우저를 띄워서 다시 보자 두개 다 정상적으로 올라왔다. 컨테이너정보를 확인해보자
    docker ps
    
    CONTAINER ID        IMAGE                         COMMAND                CREATED             STATUS              PORTS                    NAMES
    2296052db0f5        wonwoo/spring-boot-docker   "java -Djava.securit   6 minutes ago       Up 6 minutes        0.0.0.0:9001->8080/tcp   trusting_turing      
    d927a7115967        wonwoo/spring-boot-docker   "java -Djava.securit   7 minutes ago       Up 7 minutes        0.0.0.0:9000->8080/tcp   distracted_galileo
    
    요런식으로 두개가 올라와 있다. 한개를 정지해보자 정지하는건 docker stop $CONTAINER_ID
    docker stop d927a7115967
    
    다시 확인해보면
    CONTAINER ID        IMAGE                         COMMAND                CREATED             STATUS              PORTS                    NAMES
    2296052db0f5        wonwoo/spring-boot-docker   "java -Djava.securit   7 minutes ago       Up 7 minutes        0.0.0.0:9001->8080/tcp   trusting_turing
    
    요렇게 한개만 있다. 다시 실행해보자
    docker start d927a7115967
    
    다시 실행 된걸 알 수 있다. 간단한 커멘드를 알아보자.
    docker images : 이미지를 보여준다.
    docker ps -a : 모든 컨테이너 정보다.
    docker rm $CONTAINER_ID : 컨테이너를 삭제한다.
    docker start $CONTAINER_ID : 컨테이너를 시작한다.
    docker stop $CONTAINER_ID : 컨테이너를 중지한다. 
    docker logs $CONTAINER_ID : 로그를 확인한다.
    docker top $CONTAINER_ID : 프로세서 정보를 확인한다.
    docker inspect $CONTAINER_ID : 컨테이너의 모든 정보를 보여준다.(JSON)
    docker port $CONTAINER_ID : 포트가 어디로 연결 되었있는지 보여준다.
    
    이 외에도 많은 커멘드가 있다.
    docker help 
    
    로 통해 확인하자!

    참고 : 만약 docker hub 에 push를 날릴려면 wonwoo를 docker에 가입할때 본인의 name으로 바꾸셔야됩니다!!

    댓글

Designed by Tistory.