김기헌
Algorithm
•
프로그래머스 같은 숫자는 싫어
public int[] solution(int[] arr) {
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(arr[0]);
for (int i = 1; i < arr.length; i++) {
if (arr[i] != arrayList.get(arrayList.size() - 1)) {
arrayList.add(arr[i]);
}
}
int[] answer = new int[arrayList.size()];
for (int i = 0; i < arrayList.size(); i++) {
answer[i] = arrayList.get(i);
}
return answer;
}
Java
복사
•
프로그래머스 - 기능 개발
public int[] solution(int[] progresses, int[] speeds) {
ArrayList<Integer> arrayList = new ArrayList<>();
int cur = 0, flag = 0;
while (cur < progresses.length) {
for (int i = cur; i < progresses.length; i++) {
if (progresses[i] >= 100) continue;
progresses[i] += speeds[i];
}
for (int i = cur; i < progresses.length; i++) {
if (progresses[i] < 100) break;
flag = i + 1;
}
if (flag != cur) {
arrayList.add(flag - cur);
cur = flag;
}
}
int[] answer = new int[arrayList.size()];
for (int i = 0; i < answer.length; i++) {
answer[i] = arrayList.get(i);
}
return answer;
}
Java
복사
SpringBoot MVC
Docker 배포
•
루트 디렉토리에 DockerFile 추가
FROM gradle:7.4-jdk11-alpine as builder
WORKDIR /build
# 그래들 파일이 변경되었을 때만 새롭게 의존패키지 다운로드 받게함.
COPY build.gradle settings.gradle /build/
RUN gradle build -x test --parallel --continue > /dev/null 2>&1 || true
# 빌더 이미지에서 애플리케이션 빌드
COPY . /build
RUN gradle build -x test --parallel
# APP
FROM openjdk:11.0-slim
WORKDIR /app
# 빌더 이미지에서 jar 파일만 복사
COPY /build/build/libs/*-SNAPSHOT.jar ./app.jar
EXPOSE 8080
# root 대신 nobody 권한으로 실행
USER nobody
ENTRYPOINT [ \
"java", \
"-jar", \
"-Djava.security.egd=file:/dev/./urandom", \
"-Dsun.net.inetaddr.ttl=0", \
"app.jar" \
]
Docker
복사
•
서버 환경에서 Git clone Repository
Git clone https://github.com/KimKiheon/Springboot-mustache-bbs
Plain Text
복사
•
Docker 빌드
docker build -t sb-bbs .
//. 앞 뒤로 공백
Plain Text
복사
•
실행
docker run -p 8080:8080 -e SPRING_DATASOURCE_URL=jdbc:mysql:{aws public DNS}:3306
/{Database 명} -e SPRING_DATASOURCE_PASSWORD={DB 비밀번호} sb-bbs
Plain Text
복사
만났던 오류들
김상호
김상호
알고리즘
게시판 만들기
이가현
알고리즘
•
문제
•
중복제거 2가지
◦
Set → 순서 확정되지않음.
◦
stream사용
stream
array
stack
게시판 docker를 이용해 서버로 올리기
1.
intellij 에 Dockerfile 만들기
•
test파일에서 contextLoad() 제거
@SpringBootTest
class Bbs5ApplicationTests {
@Test
void contextLoads() { // 삭제
}
}
Java
복사
•
Dockerfile 파일
FROM gradle:7.4-jdk11-alpine as builder
WORKDIR /build
# 그래들 파일이 변경되었을 때만 새롭게 의존패키지 다운로드 받게함.
COPY build.gradle settings.gradle /build/
RUN gradle build -x test --parallel --continue > /dev/null 2>&1 || true
# 빌더 이미지에서 애플리케이션 빌드
COPY . /build
RUN gradle build -x test --parallel
# APP
FROM openjdk:11.0-slim
WORKDIR /app
# 빌더 이미지에서 jar 파일만 복사 //bbs5-0.0.1-SNAPSHOT.jar . 와일드카드
COPY --from=builder /build/build/libs/*-SNAPSHOT.jar ./app.jar
EXPOSE 8080
# root 대신 nobody 권한으로 실행
USER nobody
ENTRYPOINT [ \
"java", \
"-jar", \
"-Djava.security.egd=file:/dev/./urandom", \
"-Dsun.net.inetaddr.ttl=0", \
"app.jar" \
] //"bbs5-0.0.1-SNAPSHOT.jar" 와일드카드
Java
복사
2.
assemble → git commit
3.
4.
docker build -t sb-bbs .
5.
실행
•
도커
docker run -p 8080:8080 -e SPRING_DATASOURCE_URL=jdbc:mysql://<ecs 주소>:3306/<스키마> -e SPRING_DATASOURCE_PASSWORD=password <docker image>
Java
복사
•
daemon으로 띄우기
docker run -p 8080:8080 -e SPRING_DATASOURCE_URL=jdbc:mysql://<ecs 주소>:3306/<스키마> -e SPRING_DATASOURCE_PASSWORD=password -d <docker image>
Java
복사
임학준
알고리즘
ArrayList를 사용
stack을 사용
도커빌드
1 DockerFile작성
FROM gradle:7.4-jdk11-alpine as builder
WORKDIR /build
# 그래들 파일이 변경되었을 때만 새롭게 의존패키지 다운로드 받게함.
COPY build.gradle settings.gradle /build/
RUN gradle build -x test --parallel --continue > /dev/null 2>&1 || true
# 빌더 이미지에서 애플리케이션 빌드
COPY . /build
RUN gradle build -x test --parallel
# APP
FROM openjdk:11.0-slim
WORKDIR /app
# 빌더 이미지에서 jar 파일만 복사
COPY --from=builder /build/build/libs/bbs5-0.0.1-SNAPSHOT.jar .
EXPOSE 8080
# root 대신 nobody 권한으로 실행
USER nobody
ENTRYPOINT [ \
"java", \
"-jar", \
"-Djava.security.egd=file:/dev/./urandom", \
"-Dsun.net.inetaddr.ttl=0", \
"bbs5-0.0.1-SNAPSHOT.jar" \
]
Java
복사
•
bbs5-0.0.1-SNAPSHOT부분을 자신이 가지고 있는 jar 파일 이름과 같이 맞춰야한다
2 docker git clone
•
docker 설치후 git clone으로 자신이 올린 레포지토리를 설치한다
3 docker build
•
Dockerfile이 있는 경로에가서 명령어
•
docker build -t (이름지정) 으로 빌드한다
•
이후 docker images로 확인해서 빌드한 내용이 올라와있으면 성공
•
이때 mysql이 이미지에 없다면 추가해줘야한다
4 환경변수 넣고 SpringBoot 실행
docker run -p 8080:8080 -e SPRING_DATASOURCE_URL=jdbc:mysql://<ec2주소>:3306/likelion-db -e SPRING_DATASOURCE_PASSWORD=<비밀번호> <빌드이미지이름>
•
이후<ec2주소>:8080/articles/list로 접속하면 게시판 접속이 가능하다
오류상황
•
docker built - sb-bbs .
•
명령어입력후 리토지토리가 none로 뜨는현상
•
빌드과정에서 기다려야되는데 중간에 멈춘구간에서 다된줄 알고 CTRL+C로 빠져나와서 빌드가 제데로 안된 현상이었다
•
docker rmi $(docker images -f "dangling=true" -q)
•
명령어를 통해 사용하지 않는 <none>이미지를 지워주고 다시 빌드해서 성공했다