FROM node:20.10.0-alpine as build WORKDIR /home/app COPY package*.json . RUN npm install COPY . . RUN npm run build FROM node:20.10.0-alpine as production WORKDIR /home/app COPY --from=build ./home/app/package.json ./package.json COPY --from=build ./home/app/package-lock.json ./package-lock.json COPY --from=build ./home/app/tsconfig.json ./tsconfig.json COPY --from=build ./home/app/tsconfig.build.json ./tsconfig.build.json COPY --from=build ./home/app/nest-cli.json ./nest-cli.json COPY --from=build ./home/app/dist/ ./dist RUN npm install --only=production CMD ["npm", "run", "start:dev"] nestjs 애플리케이션을 docker를 사용하여 배포하기 위해서 Dockerfile을 작성했는데, dev stage에서 build한 build 산출물인 dist 폴더를 복사하려고 하는데, 복사가 되질 않네요,, 어떤 이유일까요? production stage를 주석처리하고, run build까지만 하고 exec 명령어로 해당 컨테이너에 들어가서 확인했을 때는 dist폴더가 존재하는 것을 확인했습니다..!
안녕하세요 문의드립니다 bastion host를 통해 내부 api 인스턴스에 진입하여 saju-backend-nodejs 폴더에서 .env 파일 내에 아래와 같이 작성해주었습니다 이후 pm2 start 해주고 sudo pm2 logs 해보면 아래와 같은 에러가 발생합니다 mysql 연결 에러를 어떻게 잡아주어야할지 모르겠습니다. 위 .env 파일 어디가 잘못된건지... (위 PROD_DB 정보는 제가 테라폼을 통해 생성한 RDS 정보입니다) 그럼 답변 부탁드리겠습니다
안녕하세요 강사님 배열에 대해서 정말 이해하기 쉽게 알려주셔서 정말 감사드립니다! students[0] = 90; students[1] = 80; students[2] = 70; students[3] = 60; students[4] = 50; 이 선언문을 for문을 활용해서 students[i]가 이전의 값을 계속 참조해서 10씩 증가 즉, students[0] = 60; students[1] = 70; students[2] = 80; students[3] = 90; students[4] = 100; 이렇게 응용한 코드를 작성해보려고 했는데 해당코드가 리펙토링이 잘 된 코드인지 컨펌을 받고 싶습니다.
Window에서 Volume을 적용할 때 작동하지 않는 경우가 있습니다. 예를 들어, "Hello"를 "Hello123"으로 바꿔도 여전히 "Hello"만 나오는 경우입니다. 이런 경우 이전 강의(또는 안내)에서 알려주신 것을 잘 참고해야합니다. 강사님의 안내는 다음과 같습니다. Mac의 경우 아래를 사용한다. docker run -d -p 5000:8080 -v /usr/src/app/node_modules -v $(pwd) :/usr/src/app anonymous123/nodejs 하지만, 윈도우의 경우는 아래를 사용해야한다. docker run -d -p 5000:8080 -v /usr/src/app/node_modules -v %cd% :/usr/src/app anonymous123/nodejs 하지만, 저는 Window를 사용하고 있지만 Bash Shell 을 사용하고 있었기 때문에 %cd%이 아닌 $(pwd)를 사용해야지 명령어가 작동이 되었습니다. 예상할 수 있듯이 이렇게 하면 Volume이 작동되지 않습니다. 그렇기 때문에 cmd 를 이용하여 %cd% 방식으로 해줘야지 volume이 정상 작동 합니다. 결국 OS가 Window라서 그런거 같은데,,, 솔직히 잘은 모르겠습니다 😂 도움이 되셨으면 좋겠습니다!!
강의를 따라 하나 하나 진행하고 있는데요. 제가 AWS에 대한 경험이 없어서.. 질문드립니다. myeks-host에 다운받은 *.pem 파일을 사용하여 SSH 접속을 하려고 하는데요. 아래와 같이 설정 후 접속하면 아래와 같이 오류가 발생합니다. telnet 공인IP 22로 접속 되는 것 확인 했습니다. CloudFormation을 통해 기본 인프라 배포 할때 사용한 KeyName에 키를 사용하여 (.pem) 로그인 시도하고 있습니다. 무엇이 문제 일까요?? -_-''
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] @OneToMany 어노테이션 사용시 new ArrayList<>(); 를 관례상 쓰는 이유 외에도 다양한 장점들에 대해 자세히 알 수 있을까요? 감사합니다.
강의에서 가용 영역별로 로드 밸런싱을 한다고 나와있는데, 그림 상으로 보면 서브넷 별로 로드 밸런싱을 하는 것처럼 보여서요. 가용 영역과 서브넷의 차이점을 알고 싶습니다. 제가 이해하기로는, VPC안에 여러 개의 서브넷 그리고 서브넷 안에는 여러 개의 인스턴스(EC2) 이런 식으로 이해를 하고 있는데, 여기서 가용 영역이라는 단어가 와닿지가 않네요.
안녕하세요. 다름이 아니고 다음과 같이 gradle은 8.4 버전이고 자바는 17버전을 사용하고 있습니다. 자바 17은 gradle 실행, complie할때 등등 모든 부분해서 11이 아닌 17을 사용하고 있음에도 불구하고 지속적으로 저런 에러가 발생해서 질문드렸습니다. intellij를 껏다 켜보기도 하였구요
안녕하세요 호돌맨님! 먼저 좋은강의 너무너무 감사드립니다. 시큐리티 Permission Evaluator 강의에서 알려주실때 컨트롤러로 부터 넘어온 userprincipal 의 id를 이용하여 postService.wirte에서 userRepository에서 user를 조회하셨는데요 질문 리퀘스트가 들어올 때 userDetailsService에서 user를 이미 조회를 하고 해당 유저 정보를 UserPrincipal에 넘겨서 거기서 id만을 이용하여 다시 서비스단에서 user를 조회하고있는데요 userDetailsService단에서 미리 조회해둔 user정보를 userPrincipal에 넘겨서 서비스단(postService.write)에서는 user를 다시 조회하지않고 userPrincipal에서 넘어온 user정보를 사용하면 안되는건가요? 날씨가 많이 추워졌는데 감기조심하시고 남은한해도 좋은일만 가득하세요!
강의 잘 보았습니다. 덕분에 기초 개념잡기에 수월했습니다. 강의중 SAM 같은것을 사용하면 보안이슈가 있어 선호하지않는다고 하셨는데 좀더 구체적으로 알수있을까요? 뭔가 기능이 많아지고 사이즈가 큰 프로젝트에서 콘솔에서 관리하는게 맞나 싶은 생각도 들고 또 여러 프로젝트를 한 회사의 계정에서 각각의 개발자가 개발하는 경우도 생길듯해서 로컬에서 개발해서 배포하는 경우 serverless framework, SAM, cloudformation같은 방법들이 있는듯한데 다 추천하시는 방법이 아닌지요?
main 역시 메서드인데, 앞전 메서드에서 받는 변수는 매개변수인데 main 메서드 안에는 인자를 뜻하는 args가 존재하는 건가요?? 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요. 4강 종료 후 도서관 책 등록 강의를 듣기 위해서 인텔리제이 실행을 시켰는데,모든 어노테이션들이 다 빨간줄로 되면서 사용할 수 없다는 식으로 나옵니다.build.gradle 들어가서 새로고침도 해보고, web부분 주석 후 새로고침도 해봤는데 빨간줄은 계속 나와있습니다.갑자기 왜 이러는 건지, 해결방법 알려주실 수 있으실까요?ㅠㅠ
안녕하세요 영한님! 궁금한 점은 OCP 원칙까지 보고나서 생겨난 질문입니다. Car 인터페이스를 구현하는 K3Car, Model3Car, NewCar의 클래스, Driver는 Car인터페이스를 의존하고 있는데요.,,. 강의 내용과 같이 Car 인터페이스에 있는 추상메소드들만 구현한 클래스끼리 있을 때는 크게 어려운 점이 없는 것 같지만.,., 위와 같이 NewCar에서 이 때까지 없었던 pressBrake()라는 기능을 새로 추가하여 Driver에게 해당 메소드를 사용하게 하고싶다면! 어떻게 코드를 짜야하는지 가 저의 궁금증입니다! 먼저 코드를 짜보면서 혼자 해결해보려고 했으나,.., 자바와 아직 완벽히 친해지지 못했는지 더 좋은 방법이 있지 않을까 하며 만족스러운 해법을 찾지 못 하고 있습니다.. 1. Driver 클래스의 drive() 메서드 블록 안에서 instanceof를 사용하여 car변수가 NewCar 클래스일 때 pressBrake()를 사용한다면? 강의에서 배웠던 OCP원칙 중 Closed for modification에 모순이 생겨버리고.. 2. Car 인터페이스에 pressBrake() 메서드를 넣는다면? OCP 원칙에 모순이 생길 뿐더러 오히려 대대적인 코드 수정도 생겨버립니다.. 해당 사항에 대해서는 어떻게 대처를 해야 잘했다고 소문이 날지 궁금하여 질문을 올리게 되었습니다!
@Getter @RequiredArgsConstructor public class ErrorResponse { private final String code; private final String message; } 여기서 @Getter 애노테이션을 쓰는 이유가 무엇일까요?
강의 22분 35초 경 switch-case 문을 통해 체크박스의 id로 분기를 하려고 할 때 // id로 분기함 switch (checkboxId) { case R.id.checkBox: break; case 문의 R.id .checkBox 부분에서 "Constant expression required" 에러가 발생합니다. 구글링을 해보니 switch-case 문의 상수가 final로 선언되지 않아 발생하는 문제라고 하는데 어떻게 해결할 수 있을까요?