TOPIC1. 레이어 관리에서 RUN 지시어 사용 시 && 연산자를 사용하여 레이어의 개수를 5개에서 1개로 줄이고 있는데요. 이미지의 사이즈를 줄이고 빌드 속도를 높이기 위함. 이라고 말씀을 해주셨습니다. 먼저, 질문은 2가지입니다. 레이어의 사이즈가 동일한데, 어떤 관점으로 이미지의 사이즈가 축소되는 것인가? 레이어의 재활용성에 대해서 어떻게 생각하시는지? 레이어의 사이즈를 봤을 때 5개, 1개의 사이즈가 116MB로 동일하니 이미지의 사이즈는 동일한 것으로 보입니다. 1개의 레이어는 5개의 레이어를 별도로 불러와서 빌드하지는 않으니 속도가 빨라질 수는 있을 것 같다는 생각이 들어서 빌드의 속도는 빨라지나 이미지의 사이즈가 줄어든다. 라는 부분이 이해가 되지 않았습니다. 흔한 케이스는 아닐 것 같으나, 5개의 레이어를 분리를 하게 되면 레이어를 재사용 할 수 있는 장점이 있을 것 같다는 생각이 들었습니다. 마치, 깃을 다룰 때 한 개의 커밋에 하나의 기능만 포함하도록 한 느낌처럼요. 적절하게 레이어를 분리하는 시점을 찾는 것이 중요한 것으로 얘기를 해주신걸까? 하는 생각을 해봤습니다.
안녕하세요, 강의 6-3을 듣다가 막히는 부분이 있어 질문드립니다. postgres container를 잘 실행하고 백엔드 컨테이너를 docker run -d -p 80:80 --network leafy-network --name leafy-front devwikirepo/leafy-frontend:1.0.0 명령어를 통해 실행하였습니다. 그런데 이후에 log를 보면 아래와 같은 문구들이 나오면서, 에러가 발생했다고 나옵니다. (글씨가 너무 작아서, 에러 부분은 아래와 같습니다) 2025-02-28 12:36:54.708 INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 526 ms 2025-02-28 12:36:54.731 ERROR 1 --- [ main] o.s.b.web.embedded.tomcat.TomcatStarter : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'webMvcMetricsFilter' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfiguration.class]: Unsatisfied dependency expressed through method 'webMvcMetricsFilter' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'simpleMeterRegistry' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleMetricsExportAutoConfiguration.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'processorMetrics' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.micrometer.core.instrument.binder.system.ProcessorMetrics]: Factory method 'processorMetrics' threw exception; nested exception is java.lang.NullPointerException 2025-02-28 12:36:54.740 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2025-02-28 12:36:54.743 WARN 1 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat 2025-02-28 12:36:54.749 INFO 1 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2025-02-28 12:36:54.757 ERROR 1 --- [ main] o.s.boot.SpringApplication : Application run failed docker ps -a를 해보면 아래와 같이 로그가 나옵니다. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES df36a2b0896f devwikirepo/leafy-backend:1.0.0 "java -jar leafy.jar" 52 seconds ago Exited (1) 50 seconds ago leafy 9e9ee5a82c36 devwikirepo/leafy-postgres:1.0.0 "docker-entrypoint.s…" 27 minutes ago Up 27 minutes 5432/tcp leafy-postgres\ 혹시 어떤 오류이고, 어떻게 해결하면 좋을까요? 감사합니다.
무슨 말인고 하니 똑같이 고의로 테스트를 실패하게 만들었는데 강사님 화면은 어디에서 테스트가 실패했는지 CI/CD 화면에서 보여주는데 제 화면은 스샷과 같이 안나옵니다. 강사님 화면에서는 github actions에서 아래의 화면처럼 테스트 실패 이유가 뜨는데 저는 안 떠요! =================================== 위의 사진은 저의 실제 코드 사진입니다. 제가 어디 잘못한게 있나요?
강사님과 같이 만들었습니다. 다만 제가 deploy.yml을 depoly.yml로 잘못 작성한거 빼고는 강사님과 같은데 설명에 .yml 앞의 이름은 상관 없다고 하셔서 큰 문제는 되지 않을거라고 생각합니다. 다만 사진과 같이 간단한 CI/CD 코드인데 2분이 넘도록 체크 표시가 안뜨는 문제가 있습니다. 제가 어떤 것을 잘못했을까요? 코드는 이렇게 작성했습니다.
안녕하세요. 강사님! 현재 AWS 강의를 잘 듣고 있는 학생입니다. 제가 Node.js / Nest.js를 주로 사용하고 있는데 강의 목록에 Nest에서 적용 할 수 있게 목록에 있더군요! 근데 Node에 대해서는 언급이 없는 것 같아서 Node에서도 적용 할 수 있게 해주는 내용이 강의에 있나요? 있다면 혹시 어느 목차에 있나요? 그리고 여러가지 언어에서 적용 할 수 있게끔 목록을 잘 나눠주셨더라고요! 혹시 필요한 부분만 듣고 나머지(ex_ 프론트 / 스프링 / etc..)들은 따로 안 들어도 제가 해당하는 부분만 들어도 적용과 이해에 무리가 없을까요?
안녕하세요! github actions 강의 수강 중인 학생입니다. push, pull request 이벤트 트리거를 한다는 것은 숙지했는데, YAML을 유심히 보다보니 문득 궁금증이 생겨 질문남깁니다. jobs > pull-requests-job > runs-on : ubuntu-latest를 작성하는데, runs-on에 작성된 우분투라는 것은 github의 운영체제인건가요?
gredle 을 빌드 도구 설치 해보려 하는데 메이븐과 그래들 도커파일이 설정값이 많이 달라질까요? 빌드 환경이 무엇 이냐에 따라 도커파일 설정값들을 어떻게 해야 하는지 참조 할 수 있는 있는 사이트가 있을지 궁금합니다 같은 코드로 gradle일때 변경되는 설정 값에 대해 시간이 되신다면 pdf, 깃 파일, 강의 아무거나 넣어 주시면 너무 감사드리겠습니다 gradle 하나 겨우 배워놨는데 아래에 내용에 모두 메이븐 이라고 생각하니 슬프네유 ㅠ
mysql을 설치하는 부분에서 docker로 mysql을 설치하면 ec2가 먹통이 됩니다 제가 뭘 실수했나 해서 두번 해봤는데 두번 다 같은 증상이 있습니다. 특별하게 다르게 한건 없고 윈도우 이며 말씀 주신 방법 환경으로 그대로 했습니다 파일질라 업로드, 도커 이미지 푸시등 다 잘 됐고 mysql 설치에 증상이 생겼습니다. 두번째도 같아서 글 남깁니다. 해결 방법이 있는지 궁금합니다 터미널 접속은 윈도우 파워셀로 했습니다
도커 컨테이너 내부에서 개발하는 것에 의문점이 있습니다. 개발 환경 세팅이 오래 걸려도 사실 그렇게까지 오래 걸리진 않는다고 생각하고, 개발 환경 버전이 바뀔 때도 팀 내에서 의견을 맞춰서 싱크를 맞추면 문제가 없지 않을까 싶은데요. 물론 버전이 다른 프로젝트를 여러 개 관리해야하는 상황이라면 번거로움을 없애기 위해 필요할 수도 있겠다는 생각이 들긴 합니다. 그런데 도커 컨테이너로 한 번 감싸서 개발을 진행하게 되면, 성능에 이슈가 생기지는 않나요? 바로 개발하는 것과 달리 리소스에 제한을 두게 되고 도커를 한 번 거쳐서 개발을 하게 되는 것 같아서요.
개인적으로 실습을 해보고 있는 과정에서 아무리 해도 해결책을 모르는 것을 물어보고 싶어서 남겨봅니다. multistagebuild 하기전에 singlestagebuild를 하려고 하는 상황입니다. # 빌드 환경 설정 FROM gradle:7.6-jdk17 # 작업 디렉토리 설정 WORKDIR /app # Gradle 빌드 파일과 소스 코드 복사 COPY build.gradle settings.gradle . COPY src ./src # Gradle을 사용하여 애플리케이션 빌드 RUN gradle clean build --no-daemon # 빌드된 JAR 파일을 실행 환경으로 복사 RUN cp build/libs/*.jar app.jar # 빌드된 JAR 파일 실행 EXPOSE 8080 CMD ["java", "-jar", "app.jar"] 이렇게 입력을 하면 RUN cp 과정에서 " /bin/sh -c cp build/libs/*.jar app.jar" did not complete successfully: exit code: 1 " 결과가 나옵니다. (RUN cp /app/build/libs/*.jar /app/app.jar 로 해도 결과가 똑같이 나옵니다...) 하지만 RUN cp -> COPY로 수정하면 성공합니다. 이유에 대해서 물어봐도 될까요? 아무리 구글링을 해도 답을 찾기가 힘듭니다.. 또한 RUN cp로 빌드에 성공하려면 어떻게 작성해야 할까요?
안녕하세요! 강의 정말 잘 들었습니다. 강의를 듣고 나서 혼자 프로젝트에 적용해 보던 중, 몇 가지 궁금한 점이 생겨 질문드립니다. 강의에서는 Docker Compose를 활용하여 세 개의 컨테이너를 하나의 컴포즈 파일로 묶고, 동일한 네트워크를 사용하여 API를 주고받는 방식을 설명해 주셨습니다. 이를 참고하여 직접 간단한 프로젝트를 만들어 실습해 보았는데, DB 연결에는 문제가 없었지만 프론트엔드와 백엔드 간의 통신에서 CORS 문제가 발생했습니다. 혹시 LEAFT 프로젝트에서는 CORS 문제를 어떤 방식으로 해결했는지 궁금합니다. 또한, AWS에 배포할 경우 Docker Compose로 프론트엔드와 백엔드를 하나로 묶어 한 번에 배포하는 것이 일반적인지, 아니면 각각 별도로 배포하는 것이 더 일반적인지도 궁금합니다. 다시 한번 좋은 강의 해주셔서 감사합니다!
안녕하세요. 도커 데스크탑 설치가 회사 컴퓨터로 설치하다보니 유료버젼만 가능한 상태인데 혹시 다른 방법에 대해 설명 해주실 수 있으실까요? https://hackerpark.tistory.com/entry/Windows-%EB%8B%A8%EC%9D%BC-%EB%AA%85%EB%A0%B9-%ED%95%9C%EC%A4%84%EB%A1%9C-WSL2-Ubuntu-%ED%86%B5%ED%95%A9-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0 https://hackerpark.tistory.com/entry/Docker-Windows-WSL%EC%97%90%EC%84%9C-Docker-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-Docker-Desktop-%EC%95%84%EB%8B%98 위 링크와 같은 글들을 봤는데 맞는지 모르겠습니다. 우선 설치해서 해보았는데 도커의 버전은 확인가능 하나(docker --version) 도커 실행이 되지 않습니다. docker is not running cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running? 위와 같이 나오는 상황입니다.
지금 아무리해도 이제 더이상 하기가 힘듧니다. AWS가 처음이다 보니 EC2 만드는데 너무 많은 시간을 쏟고 있습니다. 저는 github action 을 배우고 싶은 것이지 aws를 배울려고 하는게 아닙니다. 강의를 수정해주시던가, 아니면 어떻게 하면 될 것인지 명확한 절차를 알려주세요.
시나리오 2를 실습해 개발 & 운영 환경 배포를 모두 완료했고 ELB(로드 벨런서)가 2개 생성된걸 확인했는데 ec2가 2개 뿐이라 살펴보니 두 ELB가 이 2개의 ec2를 둘 다 바라보고 있어 살짝 혼란이 왔습니다! (개발 & 운영 각각 2개씩 총 4개의 ec2가 생성됨을 예상했습니다!) 이건 강사님이 실습 비용 절약을 위해 쿠버네티스와 helm 설정에 개발 & 운영환경이 같은 ec2 2개를 같이 사용하도록 설정하셔서 그런걸까요? (쿠버네티스를 이번 강의에서 처음 다뤄서 설정 내용 해석이 잘 안되네요..)
로컬에서는 springboot서버가 잘 작동되고 github actions에서도 빌드가 잘 되는 것을 확인하였습니다. 근데 ec2 서버에만 올라가면 데이터소스 관련 문제가 발생하고 java -jar 명령어에 데이터관련 인자를 넣어서 실행시키면 그때는 디비관련 오류는 없어지고 다른 문제가 있어서 jar파일을 열어서 안에 파일들을 확인해볼려고 명령어를 작성해보았는데 아무 반응이 없어서 jar파일에 문제가 생겨서 실행이 안되는건지가 궁금합니다!!
안녕하세요 강의 재밌게 듣고 있습니다. 멀티 스테이지 빌드 강의 부분 7분42초 경에 대해 궁금한 점이 있습니다. 멀티 스테이지 빌드는 빌드 스테이지 따로, 빌드한 아티팩트 실행 스테이지 따로 이렇게 진행되는 것으로 알고 있는데요 여기서 첫 번째 스테이지에서 FROM maven AS build 이렇게 주고 --from 으로 가져올 때 빌드 컨텍스트에서 가져오지 않고 스테이지에서 가져온다고 하였는데 여기서 스테이지가 이해가 가지 않는데 첫 번째 빌드 스테이지가 실행되고 난 뒤 해당 이미지 디렉토리에서 파일을 가져온다는 뜻인가요.?