Elasticsearch with docker-compose

개발공부 2020. 12. 19. 18:53
반응형

local에서 docker compose 를 이용하여 엘라스틱서치와 키바나를 띄우기.

docker-compose.yml

version: '3'
services:
  elasticsearch:
    container_name: "elasticsearch"
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.2
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      SERVER_HOST: 0.0.0.0 
  kibana:
    container_name: "kibana"
    image: docker.elastic.co/kibana/kibana:6.8.2
    ports:
      - 5601:5601
    links:
      - elasticsearch:9200 
    environment:
      SERVER_HOST: 0.0.0.0
      

 

http://127.0.0.1:5601 로 접속시 키바나가 잘 뜨고

http://127.0.0.1:9200 접속시 아래와 같이 ES정보가 나온다.

 

반응형

'개발공부' 카테고리의 다른 글

Intellij 자바 컴파일 에러  (0) 2020.11.06
Docker 이미지 만들기  (0) 2020.11.01
Docker 컨테이너 내부에 명령 실행  (0) 2020.11.01
Docker 네트워크 설정  (0) 2020.11.01
Docker 터미널 설치 - Mac OS  (0) 2020.10.31
posted by 알릿수

Intellij 자바 컴파일 에러

개발공부 2020. 11. 6. 21:04
반응형

그동안 빌드 잘되다가 인텔리제이에서 플젝 빌드가 안된다. ㅋ

java: Compilation failed: internal java compiler error

Preference > Build, Excution, Deployment > Compiler 

탭의 Build process heap size : 700(default) 를 2000 으로 늘렸더니 잘된다 ㅋ

 

 

반응형

'개발공부' 카테고리의 다른 글

Elasticsearch with docker-compose  (0) 2020.12.19
Docker 이미지 만들기  (0) 2020.11.01
Docker 컨테이너 내부에 명령 실행  (0) 2020.11.01
Docker 네트워크 설정  (0) 2020.11.01
Docker 터미널 설치 - Mac OS  (0) 2020.10.31
posted by 알릿수

Docker 이미지 만들기

개발공부 2020. 11. 1. 21:40
반응형

~ % docker container commit -a "web image" web-new alice/web:1.0.0

sha256:dd7f75f919d30175e96bfea6dad9a9b4abb0d86a81fe6e258f8f72bb0178cbd0

~ % docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alice/web           1.0.0               dd7f75f919d3        6 seconds ago       133MB
elasticsearch       7.9.3               1ab13f928dc8        2 weeks ago         742MB
nginx               latest              f35646e83998        2 weeks ago         133MB
centos              7                   7e6257c9f8d8        2 months ago        203MB

 

이미지 정보 확인

~ % docker image inspect alice/web:1.0.0

컨테이너 구동에 필요한 파일을 tar 로 내보내기

~ % docker container export sample > sample.tar

tar 를 이용하여 이미지 작성

~ % cat sample.tar | docker image import - alice/web:1.0.1

이미지를 tar 파일로 내보내기

~ % docker image save -o sample-new.tar alice/web:1.0.1

tar 를 이미지로 로드하기

~ % docker image load -i sample-new.tar

 

컨테이너를 export하는 경우 파일시스템의 구조로 tar 파일이 구성되지만,

이미지를 내보내는 경우 이미지 레이어의 구조로 생성됨.

export 한 tar 의 경우 import 로 이미지를 읽어야하고, 

save 한 tar의 경우 load로 이미지를 읽어야 함.

211090944 11  1 21:04 sample-new.tar //save
211082752 11  1 20:58 sample.tar //export

미묘하게 사이즈가 다르다. (save 한 것이 조금 더 큼)
 

반응형

'개발공부' 카테고리의 다른 글

Elasticsearch with docker-compose  (0) 2020.12.19
Intellij 자바 컴파일 에러  (0) 2020.11.06
Docker 컨테이너 내부에 명령 실행  (0) 2020.11.01
Docker 네트워크 설정  (0) 2020.11.01
Docker 터미널 설치 - Mac OS  (0) 2020.10.31
posted by 알릿수

Docker 컨테이너 내부에 명령 실행

개발공부 2020. 11. 1. 19:45
반응형

구동중인 컨테이너에 접속

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
379a17bef884        nginx               "/docker-entrypoint.…"   40 minutes ago      Up 40 minutes       0.0.0.0:80->80/tcp   web
a5a1b1c0ef8a        centos:7            "/bin/bash"              About an hour ago   Up About an hour                         sample

~ % docker attach sample

[root@a5a1b1c0ef8a /]# 

명령 프롬프트가 변경된다. (도커 컨테이너 내부에 명령을 보낼 수 있는 상태)

[root@a5a1b1c0ef8a /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@a5a1b1c0ef8a /]# cd usr/
[root@a5a1b1c0ef8a usr]# ls
bin  etc  games  include  lib  lib64  libexec  local  sbin  share  src  tmp

기본적인 리눅스 명령들이 잘 실행된다.

컨테이너에서 빠져나오기(Mac) Ctrl + p + q 

[root@a5a1b1c0ef8a /]# read escape sequence

attach 하지 않고 명령을 날릴 수도 있다.

~ % docker container exec -it sample ps -aufx

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        29  0.0  0.3  51764  3408 pts/1    Rs+  09:00   0:00 ps -aufx
root         1  0.0  0.2  11840  2908 pts/0    Ss+  08:55   0:00 /bin/bash

 

컨테이너의 파일을 호스트로 복사하기

~ % docker container cp web-new:/etc/nginx/nginx.conf ./nginx.conf

 

호스트의 현재 경로에 파일이 복사된 것을 확인할 수 있다.

~ % ls nginx.conf 

nginx.conf

 

반응형

'개발공부' 카테고리의 다른 글

Intellij 자바 컴파일 에러  (0) 2020.11.06
Docker 이미지 만들기  (0) 2020.11.01
Docker 네트워크 설정  (0) 2020.11.01
Docker 터미널 설치 - Mac OS  (0) 2020.10.31
스프링 부트 설정 에러  (0) 2020.01.22
posted by 알릿수

Docker 네트워크 설정

개발공부 2020. 11. 1. 16:56
반응형

1. Docker의 네트워크 정보

~ % docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
974ff5b6e135        bridge              bridge              local
1efae2c6c97a        host                host                local
0669358a7263        none                null                local

 bridge 라는 이름의 네트워크는 도커에서 기본 생성한 것으로, 컨테이너에 네트워크 지정을 하지 않으면 bridge 네트워크를 사용하게 된다.

기본 브릿지 네트워크를 사용하는 경우 이름을 해결할 수 없다고하는데 (무슨소린지..?) 이를 해결하기 위해 컨테이너를 실행시 --link옵션을 사용하여 도커의 호스트파일에 컨테이너의 아이피 정보를 등록한다고 한다.

2. Docker Container 의 네트워크 정보 확인

~ % docker container inspect web

3. 네트워크 생성

~ % docker network create --driver=bridge web-network 

기본 브릿지 네트워크와 다르게 사용자가 직접 생성한 네트워크는 link 옵션을 사용하지 않고 앨리어스를 사용할 수 있고, 편하기 때문에 권장된다.

4. 도커 컨테이너의 네트워크 설정

web 컨테이너를 실행하고

~ % docker container run --name=web -it -d -p 80:80 nginx

잘 떠있는지 확인

~ % docker container ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
379a17bef884        nginx               "/docker-entrypoint.…"   9 seconds ago       Up 8 seconds        0.0.0.0:80->80/tcp   web
a5a1b1c0ef8a        centos:7            "/bin/bash"              29 minutes ago      Up 29 minutes                            sample

 

web 컨테이너에 web-network를 할당해준다.

~ % docker network connect web-network web

추후 또 다른 컨테이너를 web-network에 할당해주면, 같은 네트워크가 할당된 컨테이너끼리 통신이 가능하다.

~ % docker inspect web

"web-network": {
                    "IPAMConfig": {},
                    "Links": null,
                    "Aliases": [
                        "379a17bef884"
                    ],
                    "NetworkID": "8778ec0e1d85438eb30bffee9e2f9f05e024c533bc13a242ac744c2308a63b98",
                    "EndpointID": "72c183c44b0aea0f99e3234b3acdc7ffa2b3579e9aee56ed0d1cc5c905d56368",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": {}
                }

~ % docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
974ff5b6e135        bridge              bridge              local
1efae2c6c97a        host                host                local
0669358a7263        none                null                local
8778ec0e1d85        web-network         bridge              local

동일한 네트워크 아이디가 설정된 것을 확인할 수 있다.

네트워크의 정보를 조회해보면, 

~ % docker inspect web-network

[
    {
        "Name": "web-network",
        "Id": "8778ec0e1d85438eb30bffee9e2f9f05e024c533bc13a242ac744c2308a63b98",
        "Created": "2020-11-01T07:15:22.801328753Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
"Containers": {
            "379a17bef884a183d42976cbed881b46b6cf5205e50d436f37ccd23b8e017038": {
                "Name": "web",
                "EndpointID": "72c183c44b0aea0f99e3234b3acdc7ffa2b3579e9aee56ed0d1cc5c905d56368",
                "MacAddress": "",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },

해당 네트워크를 사용중인 컨테이너의 정보를 확인할 수 있다.

(subnet: 172.18.0.0/16 -> 172.18.*.* 로 2^16 개의 주소표현이 가능하다는 의미)

반응형

'개발공부' 카테고리의 다른 글

Docker 이미지 만들기  (0) 2020.11.01
Docker 컨테이너 내부에 명령 실행  (0) 2020.11.01
Docker 터미널 설치 - Mac OS  (0) 2020.10.31
스프링 부트 설정 에러  (0) 2020.01.22
JUnit으로 컨트롤러 테스트  (0) 2019.09.04
posted by 알릿수

Docker 터미널 설치 - Mac OS

개발공부 2020. 10. 31. 23:08
반응형

mac 에서 도커를 터미널로 설치해보았다.

~% brew cask install docker

==> Tapping homebrew/cask
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 488657 (delta 5), reused 1 (delta 0), pack-reused 488643
Receiving objects: 100% (488657/488657), 224.38 MiB | 8.64 MiB/s, done.
Resolving deltas: 100% (346812/346812), done.
Tapped 1 command and 3697 casks (3,814 files, 240.3MB).
==> Downloading https://desktop.docker.com/mac/stable/48506/Docker.dmg

######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'docker'.
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.

🍺  docker was successfully installed!

맥주 이모지 너무나 귀여운 것..

버전 확인하고

~ % docker --version

Docker version 19.03.13, build 4484c46

 

centOS7 이미지 받아서 헬로월드 찍어보기

~ % docker container run centos:7 /bin/echo 'Hello world'

docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.

 

불만이 많다.

찾아보니 docker-machine을 설치하란다. virtualbox는 이미 깔려있어 패스.

~ % docker-machine create --driver virtualbox default

Running pre-create checks...
(default) Image cache directory does not exist, creating it at /Users/Alice/.docker/machine/cache...
(default) No default Boot2Docker ISO found locally, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v19.03.12
(default) Downloading /Users/Alice/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v19.03.12/boot2docker.iso...
(default) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Creating machine...
(default) Copying /Users/Alice/.docker/machine/cache/boot2docker.iso to /Users/Alice/.docker/machine/machines/default/boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Found a new host-only adapter: "vboxnet1"
(default) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env default

 

~ % eval "$(docker-machine env default)"

다시 헬로월드를 찍어보자.

~ % docker container run centos:7 /bin/echo 'hello world'

Unable to find image 'centos:7' locally
7: Pulling from library/centos
75f829a71a1c: Pull complete 
Digest: sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Status: Downloaded newer image for centos:7
hello world

hello world 가 찍히는걸 확인할 수 있다.

현재 떠있는 도커 컨테이너 확인

~ % docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

아무것도 없다. 저거 찍고 종료되었기 때문.

~ % docker container ps -all

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES

5644019dfd27        centos:7            "/bin/echo 'hello wo…"   2 minutes ago       Exited (0) 2 minutes ago                       objective_varahamihira

-all 옵션을 주면 해당 컨테이너가 2분전에 종료(Exited)된 것을 확인 할 수 있다.
옵션없이 실행 하면 현재 떠있는 컨테이너 목록만 확인할 수 있다.

다시한번 찍어보면 이번에는 pull 하지 않고 바로 터미널에 헬로월드가 찍힌다. 

~ % docker container run centos:7 /bin/echo 'hello world'

hello world

 

아래와 같이 image 리스트를 확인해보면 centos 7 가 존재하기 때문이다.

~ % docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

centos              7                   7e6257c9f8d8        2 months ago        203MB

 

niginx를 받아본다.

~ % docker pull nginx

Using default tag: latest
latest: Pulling from library/nginx
bb79b6b2107f: Pull complete 
111447d5894d: Pull complete 
a95689b8e6cb: Pull complete 
1a0022e444c2: Pull complete 
32b7488a3833: Pull complete 
Digest: sha256:ed7f815851b5299f616220a63edac69a4cc200e7f536a56e421988da82e44ed8
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

 

 

버전을 명시하지 않으면 최신버전(latest)을 받아온다.

도커 허브에서 제공하는 이미지의 버전은 여기서 확인가능하다. ->  hub.docker.com 

 

Docker Hub

Docker Certified:Trusted & Supported Products Certified Containers provide ISV apps available as containers. Certified Plugins for networking and volumes in containers. Certified Infrastructure delivers an optimized and validated Docker platform for enterp

hub.docker.com

예를들면.. 이렇게 해당 이미지의 상세정보에서 확인이 가능하다.

 

자 이제 niginx도 pull 되었다. 이미지 확인을 해본다.

~ % docker image ls

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              f35646e83998        2 weeks ago         133MB
centos              7                   7e6257c9f8d8        2 months ago        203MB

 

컨테이너를 web 이라는 이름으로 띄운다.

도커를 띄우는 호스트의 80을 컨테이너로 올린 80에 포워딩 한다.

이 뜻은.. 호스트 주소의 80으로 접속하면 niginx 로 요청을 받을 수 있다는 것을 의미한다.

 ~ % docker container run --name web -d -p 80:80 nginx

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up

 

~ % docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
348de6cba724        nginx               "/docker-entrypoint.…"   5 minutes ago       Up 2 seconds        0.0.0.0:80->80/tcp   web

nginx 이미지를 가진 web 컨테이너의 상태가 Up 상태인 것을 확인할 수 있다.

그러면 로컬호스트로 요청을 날려보자.

~ % curl "http://localhost"

curl: (7) Failed to connect to localhost port 80: Connection refused

 

커넥션 실패.. 
docker-machine 을 썼기때문에 ㅜㅜ docker-machine의 아이피를 확인해본다.

~ % docker-machine ip

127.0.0.1

예시로 127.0.0.1 이 나왔다고 치면.. 자 각자의 IP를 확인하여 다시 요청을 날려보자.

~ % curl "http://127.0.0.1"

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

 

niginx index 페이지 처럼 보이는 소스가 출력된다.

브라우저에서 아이피로 한번 들어가보자~ ( 내부 IP이므로  외부에서는 접근이 불가능하다)

로맨틱 성공적~

niginx 를 올려서 확인까지 해보았다.

컴퓨터가 재부팅되면 저 docker-machine이 종료되면서 접근이 불가능하다.

다시 도커 머신을 구동시켜 내부 아이피를 할당받아 사용할 수 있다.

~ % docker-machine start default

Starting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Machine "default" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

 

~ % eval "$(docker-machine env default)"

까지 하고나면 아까와 같이 다시 사용할 수 있는 환경이 셋팅된다.

다시 웹 컨테이너를 띄우고 (start)

~ % docker start web

내려본다. (stop)

 ~ % docker stop web

 

반응형

'개발공부' 카테고리의 다른 글

Docker 컨테이너 내부에 명령 실행  (0) 2020.11.01
Docker 네트워크 설정  (0) 2020.11.01
스프링 부트 설정 에러  (0) 2020.01.22
JUnit으로 컨트롤러 테스트  (0) 2019.09.04
JSP 파일 생성시 에러  (0) 2017.05.17
posted by 알릿수

스프링 부트 설정 에러

개발공부 2020. 1. 22. 15:18
반응형

스프링 부트 설정 관련 검색을 하다보면 항상 보이는 문구..

스프링 부트는 스프링에 비해 설정이 쉽고.. 어쩌고..

그런데 저는 안되더라고요.. 아래 이런 에러도 뜨고..

re-run spring boot configuration annotation processor to update generated metadata

몇 시간의 삽질 끝에 알아낸 이유.. 나의 삽질기록. ㅜㅜ

나처럼 intellij를 사용한지 얼마 안된 분.. 스프링/부트 설정을 삽질하고 계신 분들.. gradle을 접한지 얼마 안되신 분들께 이 글이 도움되길..


intellij 에서 프로젝트를 새로 생성하고 호기롭게 스프링 부트 설정을 했다.

File > New > Project

gradle, spring boot web 이외에는 선택하지 않음.

 

application.properties 파일을 삭제하고 application.yml 설정파일을 하나 만들었다. 

별 내용은 없고, 테스트를 위한 문자열을 셋팅했다.

해당 설정을 읽기 위한 별도의 셋팅은 없다.

부트는 알아서 다 해준다고.. application.properties 이든, application.yml과 같은 이름이라면 알아서 읽어줌. (매뉴얼 참고: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-profile-specific-configuration)

자.. 설정파일을 읽어봅니다. 짜잔.. 아래처럼 TestController를 생성하여 프로퍼티 셋팅을 @Value 로 셋팅해보았다.

Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'test-api.url' in value "${test-api.url}"

에러가 뙇.

 

뭐가 문제일까..?

아무리 우측의 gradle 탭에서 새로고침도 해보고 Task > build를 실행해봐도.. 되는 척만 할 뿐..

build.gradle 파일을 한번 열어보자.. 보이나요 회색 회색.. 모두 흐리멍텅.. ^,^..

 

build.gradle 우클릭 > import Gradle Project 선택 

 

하는 즉시 intellij 가 바빠짐.

 

흐리멍텅하던 상태가 오색찬란하게 바뀐다.

다시 run 하여 http://127.0.0.1:8080/ 를 호출하면 application.yml의 test-api.url 값을 잘 읽어올 수 있다.

 

요약: 프로젝트 생성 후 import gradle project 를 꼭 수행합시다.

반응형

'개발공부' 카테고리의 다른 글

Docker 네트워크 설정  (0) 2020.11.01
Docker 터미널 설치 - Mac OS  (0) 2020.10.31
JUnit으로 컨트롤러 테스트  (0) 2019.09.04
JSP 파일 생성시 에러  (0) 2017.05.17
maven 셋팅 에러  (0) 2017.05.17
posted by 알릿수

일산 - 제이든 더 부처(Jaden the Butcher)

먹부림 2020. 1. 8. 00:35
반응형

오랜만에 뭉친 셋~

평소와 다르지않게 육덕진 음식을 물색하던 중..

나는 그저 플레터에 꽂혀 있었던 것 뿐이고..
돈스파이크 가게는 이태원까지 가야하고..
우린 체력이 없고 시간도 없고..

와중에 일산에 플레터 맛집이 있다는 사실을 발견하였다!
이는 2020년을 여는 중대한 발견이었음을..
음식을 맛보기전까지 아무도 알지못했다.

 

 

짜잔~
백마역과 정발산역 사이에 자리잡고 있다.

 

셋이서 풀드포크 플래터/크림파스타 + 토마토파스타
요렇게 요리를 시키고 코젤다크 생맥 세잔!

 

영롱한 자태..
치즈 .
..

오밤중에 사진보니 식욕이 돋는다.

 

첨 먹어보는 코젤다크 생맥..
주변에 흑설탕과 계피가루를 뿌려줌ㅎㅎ

 

파스타 둘다 성공적~

셋다 만족하고 나옴..
고기양을 보고 배가 찰까? 했는데 기우였다!
기! 우!

 

꼭 빠른시일내에 재방문 할것이야ㅜㅜ..
육덕식사랑 미식회는 계속된드아..

 

반응형

'먹부림' 카테고리의 다른 글

서대문 - 복운각  (0) 2017.06.14
일산 - 벨라시타 조슈아버거  (0) 2017.06.11
일산 - 벨라시타 바나나 BarNANA  (0) 2017.05.17
일산 - 벨라시타 배터리파크  (0) 2017.05.17
홍대 - 또 보겠지 떡볶이  (0) 2017.02.04
posted by 알릿수

JUnit으로 컨트롤러 테스트

개발공부 2019. 9. 4. 13:03
반응형

1. JUnit5 는 JDK9부터 사용 가능

프로젝트에서 JDK8을 쓰고있어 JUnit4를 사용합니다.

2. 프로젝트 디렉토리 구조

관례적으로 아래와 같은 디렉토리를 구성하도록 합니다.

테스트가 필요한 소스 클래스에서 Ctrl + Shift + T 를 누르면 IDE가 소스 디렉토리와 동일한 위치에 Test 클래스를 생성해줍니다.

project
  ㄴsrc
    ㄴmain
      ㄴjava
        ㄴcontroller
          ㄴHistoryController.java
        ㄴrepository
          ㄴHistoryRepository.java
      ㄴresources
    ㄴtest
      ㄴjava
        ㄴcontroller
          ㄴHistoryControllerTest.java
        ㄴrepository
          HistoryRepositoryTest.java
       ㄴresources


Test 파일은 소스 파일과 같은 경로에 위치하도록 합니다.

3. Annotation

스프링 부트에서 JUnit 테스트를 하기 위해서는 테스트 클래스 위에 아래 어노테이션이 필요합니다.

@RunWith(SpringRunner.class)

@SpringBootTest

 

4. Controller 테스트 (MocMvc 사용하기)

만약, 컨트롤러 테스트를 위하여 MockMvc를 사용하고자 한다면, 아래와 같은 어노테이션을 추가해주어야 합니다.

(@SpringBootTest 어노테이션 만으로는 서버를 실행하지 않기 때문이라고 함..)

@AutoConfigureMockMvc

추가하지 않는다면 아래와 같이 MockMvc를 @Autowired 하였을때 불평을 합니다.

Could not autowire. No beans of 'MockMvc' type found.

컨트롤러 테스트 클래스는 아래와 같은 어노테이션을 갖게 됩니다.

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HistoryControllerTest {

    @Autowired  
    private MockMvc mvc;

}

 

5. Test 함수 작성(GET Method)

JUnit으로 Test 함수가 실행되기 위해서는 아래와 같은 조건이 필요합니다.

  • 함수의 상단에 @Test 어노테이션이 필요합니다.
  • 접근제어자가 public 이어야 합니다.
  • 함수의 return 타입이 void 여야 합니다.

 

6. GET Method Test

HistoryControllerTest에서 HistoryController가 제공하는 api를 호출하는 함수를 작성합니다.

테스트 대상 URL은 http://localhost:8080/history/load 로 동작하며,
아래의 코드로 해당 URL로의 GET request의 응답이 200인지 확인해봅니다.

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class HistoryControllerTest {
	@Autowired
    private MockMvc mvc;
    
    @Test
    public void loadDump() throws Exception {
        this.mvc.perform(get("/history/load"))
                .andExpect(status().isOk());
    }
}

 

반응형

'개발공부' 카테고리의 다른 글

Docker 터미널 설치 - Mac OS  (0) 2020.10.31
스프링 부트 설정 에러  (0) 2020.01.22
JSP 파일 생성시 에러  (0) 2017.05.17
maven 셋팅 에러  (0) 2017.05.17
svn branch 리스트 확인  (0) 2017.03.23
posted by 알릿수

고프로5 약 20만원 득템기

구매후기 2017. 7. 18. 23:38
반응형

이번 구매후기는 신라면세점 공략기 라고도 할 수 있다.


나는 이전에 면세점의 적립금 이라는 것이 

참으로 있으나 마나 한 제도라고 생각하였다.


그러나..


면세점에서는 모객을 위한 것인지 돈을 마구 뿌린다.


그것이 바로 선불카드..


6월달에는 위비톡에서 80만원이상 환전을 하면 


4만원 선불카드를 증정해주는 이벤트가 있었는데,


내가 눈독들이는 와중, 7월이 되어 이벤트 종료.. 




따흐흑 ^^


선불카드 모으는데 신경써야 하는 이유는,


적립금은 상품금액의 30%까지만 사용가능하지만..


선불카드의 사용 금액에는 제한이 없다.


주의할점은 전점 이용가능한지 인천공항점인지 서울점인지... 사용처 확인 필요!



어떻게 하면 선불카드를 손에 넣을 수 있을 것인가..?


적은돈을 들여 큰 이익을 얻는 방법!!!


우리는 돈앞에 한없이 짱구를 굴릴 수 밖에 없는 것이다.






1. 신용카드 선불카드를 득템!


일단, 신라면세점의 선불카드 바우처를 증정해주는 신용카드를 서치해보았다.


가장 눈에 들어오던 것은 바로 BC카드 블리스7!


블리스7의 연회비는 20만원이나, 선불카드 20만원을 증정한다.


또한, PP카드를 제공하며 라운지 횟수에 제한이 없다.


저 연회비를 내 돈으로 다 바르긴 좀 부담이 되지만, 


뽐뿌에서 카드영업하시는 분을 접선하면 페이백을 받아 만들 수 있다. (나는 17에..)


단 페이백 조건에 맞춰 몇개월 결제금액 얼마! 

이걸 유지해주는 매너!


연회비와 실적 30만원이 쌓이면 바우처를 신청할 수 있으며, 선결제 신공 가능하다.. ㅋ ㅋ ㅋ

연회비는 선결제하겠다고 요청하면,

다음날 결제가능함.


바우처는 등기로 받고, 받은날 바로 교환이 가능하다.

단, 여권이 있어야하는데 문의해보니 

본인 사진이 잘 나와있다면 실물이 아니어도 

사진으로 대체 가능하다.​


바우처 교환은 신라면세점 서울점, 인천공항점에서 

가능한데, 인터넷 선불카드로 적립하는 것은 

서울점만 가능하고, 지하1층 고객센터에 

바우처 제출하며 이야기하면 친절하게 처리해준다.



2. SKT 제휴혜택!


또한.. SKT 라면 내맘대로 플러스 라는 혜택을 선택할 수 있는데,


이때 해외여행 혜택(신라면세점/마티나 라운지)이 설정되어있다면 ok캐쉬백 항목에서 두툼포인트 포함 최대 3만원까지 사용가능하다.


(그런데 사용금액이 결제금액의 몇%로 자동 계산하는듯)


http://tmembership.tworld.co.kr/web/html/vip_lounge/diyplus/diyplus.jsp




2. SKT 초콜릿 이용!


다른 선불카드를 얻는 방법!


SKT 초콜릿 사이트에서 1만원으로 2만원 선불카드를 사기!


http://tmembership.tworld.co.kr/web/html/chocolate/main/ChocoMainView.jsp?sel=1&chocoSel=3&PROD_ID=1706263413&pageNo=1


유효기간이 3개월이라고 쓰여있지만,


이것은 면세점 사이트에 등록을 3개월안에 하라는 소리임.


때문에 면세점 사이트에 선불카드 등록을 하면 유효기간이 3년이므로, 아주 넉넉하다.


요건 1년에 두번 구매가능하다.


1월~6월중 한번, 7월~12월 중에 한번. 


적립과는 상관없고, 다행이 6월 말에 이 방법을 알아서 6월, 7월 2번 구매하여 2만원을 이득보았다.




3. 등급혜택!


그리고 아래 이벤트 페이지에서 혜택확인을 하면, 온라인 등급이 슈퍼프리미엄 플러스 등급이 된다.


http://www.shilladfs.com/estore/kr/ko/event/eventSimplePartView?eventId=E21226&affl_id=900649


이것이 좋은 점은!!!


My page에서 등급혜택 적립금을 또 받을 수있다는 사실..


심지어 다음달 만원 적립금을 땡길 수 있음.


정률쿠폰도 주는데.. 

이번에 적용을 못해서..

이건 내가 쓸일이 있을지 ^^;




4. SKT 통신사 할인!


T멤버십 할인은 추가로 받을 수 있음..^^ 꺄꺄꺄


정률 VIP/골드 5% 나머지 2%인데, 매월 특정한 3일은 2배로 할인해준다. (10% / 5%.. 단, 결제금액)


http://www.shilladfs.com/estore/kr/ko/event/eventView?eventId=E22086&affl_id=900374




5. 해피머니/문화상품권 구매!


신라면세점 결제시 해피머니나 문화상품권을 사용할 수 있다.(단 둘다는 사용불가하고, 해피머니는 최대 10만원까지 사용가능.)


네이버 쇼핑검색을 해보면 해피머니나 문화상품권을 정가보다 저렴하게 판매하는 것을 볼 수 있다.


100000 -> 91000




6. 신라면세점 각종 이벤트


그냥 한방에 십만원 주면 될텐데..


이벤트 페이지마다 이것저것 찾아가서 누르고 해야함..


노가다를 해서 받는 수밖에 없다.


출국일 등록, 24시간 유효한 매일매일 증정 쿠폰, 위클리 적립금 등..


-> 여기서 얻는 적립금은 대부분 유효기간이 짧게 있다.


결제 시 사용 가능한 적립금 한도가 있기때문에(30%) 너무 애쓰며 받지 않는다.. ㅠㅠ


노가다 중간중간에 체크 필요.




그래서 결론적으로.. 얼마에 구매했을까요!




선불카드+결제금액+카드연회비+해피머니

2만+6만+3만+9만 = 약 20만원!





내가 잘 모실게 고프로5..


사용기와 악세사리 이야기는 다음에..ㅎ

반응형

'구매후기' 카테고리의 다른 글

일산 - 벨라시타 피어싱  (0) 2017.06.11
킨들 페화3 vs 크레마 사운드  (0) 2017.02.26
BOSE QC35  (3) 2017.02.15
posted by 알릿수