./gradlew bootRun
API DETAIL
$ curl -I http://localhost:8080/people
HTTP/1.1 204
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Link: <http://localhost:8080/people>;rel="self",<http://localhost:8080/profile/people>;rel="profile",<http://localhost:8080/people/search>;rel="search"
Date: Wed, 06 Mar 2024 02:47:14 GMT
$ curl http://localhost:8080/people
{
"_embedded" : {
"people" : [ ]
},
"_links" : {
"self" : {
"href" : "http://localhost:8080/people?page=0&size=20"
},
"profile" : {
"href" : "http://localhost:8080/profile/people"
},
"search" : {
"href" : "http://localhost:8080/people/search"
}
},
"page" : {
"size" : 20,
"totalElements" : 0,
"totalPages" : 0,
"number" : 0
}
}%
$ curl http://localhost:8080/people/1
{
"firstName" : "Frodo",
"lastName" : "Baggins",
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/1"
},
"person" : {
"href" : "http://localhost:8080/people/1"
}
}
}%
$ curl -i -H "Content-Type:application/json" -d '{"firstName": "Frodo", "lastName": "Baggins"}' http://localhost:8080/people
HTTP/1.1 201
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Location: http://localhost:8080/people/1
Content-Type: application/hal+json
Transfer-Encoding: chunked
Date: Wed, 06 Mar 2024 02:50:04 GMT
{
"firstName" : "Frodo",
"lastName" : "Baggins",
"_links" : {
"self" : {
"href" : "http://localhost:8080/people/1"
},
"person" : {
"href" : "http://localhost:8080/people/1"
}
}
}%
- https://spring.io/guides/topicals/spring-boot-docker
- only when it's m2 issues : --platform linux/amd64
$ ./gradlew clean bootJar
$ docker build --platform linux/amd64 --build-arg JAR_FILE=build/libs/restdb-0.2.0-SNAPSHOT.jar -f docker/Dockerfile -t restdb:0.2.0 .
$ docker run --platform linux/amd64 -d --name restdb020 -p 8020:8080 restdb:0.2.0
$ docker compose -f docker-compose.yml up -d --force-recreate --build
$ curl -Iv http://localhost:8888/people/1
* Trying 127.0.0.1:8888...
* Connected to localhost (127.0.0.1) port 8888 (#0)
> HEAD /people/1 HTTP/1.1
> Host: localhost:8888
> User-Agent: curl/7.84.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200
HTTP/1.1 200
< Server: nginx/1.25.4
Server: nginx/1.25.4
< Date: Wed, 06 Mar 2024 11:25:59 GMT
Date: Wed, 06 Mar 2024 11:25:59 GMT
< Content-Type: application/hal+json
Content-Type: application/hal+json
< Connection: keep-alive
Connection: keep-alive
< Vary: Origin
Vary: Origin
< Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Method
< Vary: Access-Control-Request-Headers
Vary: Access-Control-Request-Headers
<
* Connection #0 to host localhost left intact
$ curl http://localhost:8888/people/1 | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 204 0 204 0 0 3702 0 --:--:-- --:--:-- --:--:-- 4000
{
"firstName": "Gil Dong",
"lastName": "Hong",
"_links": {
"self": {
"href": "http://rest:8080/people/1"
},
"person": {
"href": "http://rest:8080/people/1"
}
}
}
$ curl http://localhost:8888/people/1 | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 204 0 204 0 0 3634 0 --:--:-- --:--:-- --:--:-- 4250
{
"firstName": "Gil Dong",
"lastName": "Hong",
"_links": {
"self": {
"href": "http://rest:8080/people/1"
},
"person": {
"href": "http://rest:8080/people/1"
}
}
}
$ docker exec restdb-proxy-1 tail -n 6 /var/log/nginx/api-proxy.access.log
172.27.0.1 - - [06/Mar/2024:12:32:11 +0000] "HEAD /people/1 HTTP/1.1" 200 0 "-" "curl/7.84.0" cs=EXPIRED
172.27.0.1 - - [06/Mar/2024:12:32:12 +0000] "HEAD /people/1 HTTP/1.1" 200 0 "-" "curl/7.84.0" cs=HIT
172.27.0.1 - - [06/Mar/2024:12:32:12 +0000] "HEAD /people/1 HTTP/1.1" 200 0 "-" "curl/7.84.0" cs=HIT
172.27.0.1 - - [06/Mar/2024:12:32:13 +0000] "HEAD /people/1 HTTP/1.1" 200 0 "-" "curl/7.84.0" cs=HIT
172.27.0.1 - - [06/Mar/2024:12:32:14 +0000] "HEAD /people/1 HTTP/1.1" 200 0 "-" "curl/7.84.0" cs=HIT
172.27.0.1 - - [06/Mar/2024:12:32:15 +0000] "HEAD /people/1 HTTP/1.1" 200 0 "-" "curl/7.84.0" cs=HIT
$ docker exec restdb-proxy-1 cat /etc/nginx/conf.d/proxy.conf
proxy_cache_path /etc/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=1m use_temp_path=off;
log_format cache '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" cs=$upstream_cache_status';
server {
listen 80;
## Access and error logs.
access_log /var/log/nginx/api-proxy.access.log cache;
error_log /var/log/nginx/api-cache.error.log;
location / {
proxy_pass http://rest:8080;
# proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
proxy_cache_valid 200 302 5s;
proxy_cache_valid 404 1m;
proxy_cache my_cache;
# proxy_cache_valid 24h;
# proxy_cache_methods GET POST;
}
}%
![image](https://private-user-images.githubusercontent.com/87309910/310336185-9a45696b-399e-4551-aa0b-ec24fc9f82e5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjU5ODU0MjAsIm5iZiI6MTcyNTk4NTEyMCwicGF0aCI6Ii84NzMwOTkxMC8zMTAzMzYxODUtOWE0NTY5NmItMzk5ZS00NTUxLWFhMGItZWMyNGZjOWY4MmU1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEwVDE2MTg0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE5MDY0MTUyODZiZGQ5NGZjMTZhZjExMjVlNTc4ZjY4MzE1OWIzNzUxY2E0OGFmOGZkY2ZhNzg3YzcyNjgyNjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Q9kTY5muoA90YSn467HqB4hCr6D-N00YoR0xJUSl-A8)
- AWS Regions
- official GitHub Actions – CI/CD pipeline to deploy a Web App to Amazon EC2
- configure-aws-credentials
- AppSpec 파일 구조
- AppSpec 권한 섹션
- CodeDeploy agent was not able to receive the lifecycle event. Check the CodeDeploy agent logs on your host and make sure the agent is running and can connect to the CodeDeploy server
- InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please check if this instance was started with an IAM instance profile