묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결React + API Server 프로젝트 개발과 배포 (CI/CD)
vite 사용 안하고 CRA 프론트 백 분리시켜서 하고있는데 질문있습니다.
vite 사용 안하고 CRA 프론트 백 분리시켜서 하고있는데 질문있습니다.백엔드 서버에 그냥 node만 받아서 올려놨는데swagger options에 routes 디렉토리가 없으면 어떻게 작성하죠?루트에 index.js를 api 로 사용하는데 그럼 apis: ["./index.js"]이렇게 넣으면 될까요?그리고 swagger 사용에 router 폴더 없이 사용하려고 하는데, 어떻게 해야 스웨거로 넘어가죠??이미 api들은 다 작성한 상태구요
-
해결됨개발자를 위한 쉬운 도커
도커 볼륨 경로에 대한 질문입니다
강의 14:50 쯤에 제가 이해한 바로는 맥에서는 도커데스크탑인 가상머신을 사용하기 때문에 저 경로가 도커 데스크탑에서의 볼륨 경로이고 여기에 실제 데이터를 저장한다고 이해했습니다. 그렇다면 만약 도커 데스크탑을 삭제한다면 여기에 저장된 데이터들은 없어지는건가요? 그리고 저 경로에 왜 접근이 힘든건지 잘 모르겠습니다.
-
해결됨개발자를 위한 쉬운 도커
컨테이너에도 OS가 포함되는지 궁금합니다.
안녕하세요, 좋은 강의 잘 듣고 있습니다.PART2의 강의자료인 "이미지와_컨테이너 PDF"의 4, 5페이지의 그림을 보면 컨테이너 역시 OS를 포함하는 것으로 표현되어 있습니다. 강사분께서 nginx를 예를 들어주실 때에도 nginx 이미지를 만들때 OS가 포함된다고 설명해 주시 기억이 납니다.다만 보통 블로그나 유튜브 등에서는 VM과 컨테이너 방식을 비교할 때 "컨테이너에는 OS가 포함되지 않는다, 그래서 빠르다"고 표현하는 것을 종종 보아왔기에 이 부분이 헷갈립니다.5페이지의 그림을 잘 보면 컨테이너들은 각각 OS를 포함하고 있고, 커널은 HOST OS의 것을 공유하는 것으로 이해됩니다. 이말은 컨테이너에 포함된 OS는 커널을 포함하고 있지 않는 것인가요? 즉, "각 컨테이너들은 커널을 포함하고 있지 않고 (단, OS는 포함하고 있음) 호스트의 커널을 공유하기때문에 커널이 포함되어 있는 전체 OS를 모두 가지고 실행되는 VM대비 가볍다" 라고 이해해도 무방할까요? 제가 시스템, OS 쪽 지식이 너무 얕습니다. 초보적인 질문이라도 양해부탁드립니다.
-
해결됨개발자를 위한 쉬운 도커
commit 예제에서 -c 'CMD ["nginx", "-g", "daemon off;"]'가 필요한 이유가 궁금합니다.
이미지 커밋 예제를 보면 docker commit -m "edited index.html by devwiki" -c 'CMD ["nginx", "-g", "daemon off;"]' officialNginx (개인레지스트리명)/commitnginx를 통해 이미지를 커밋하고있습니다.이때 -c 'CMD ["nginx", "-g", "daemon off;"]' 옵션을 포함하지 않고 커밋하면 컨테이너가 정상적으로 실행되지 않고 곧바로 Exited되는 것을 확인하였습니다.커밋시 -c 'CMD ["nginx", "-g", "daemon off;"]' 를 포함해야 하는 이유가 궁금합니다.
-
해결됨개발자를 위한 쉬운 도커
docker run -d -p 8080:3000 관해서 질문 있습니다.
docker run -d -p 8080:3000 --name defaultColorApp devwikirepo/envnodecolorapp제가 이해하고 있는 부분해당 도커 실행 명령어 중 docker run -d -p 8080:3000 명령어는 호스트의 8080 포트를 컨테이너의 3000 포트에 매핑하여 실행한다. 제가 시도한 부분 docker run -d -p 8080:3000 docker run -d -p 8080:3001 로 내부 컨테이터 포트를(3000 -> 3001) 바꾸게 되면 동작하지 않습니다. 제 생각에는 해당 이미지에 할당된 포트번호 있다고 예상했고 docker image inspect devwikirepo/envnodecolorapp 을 실행 후 해당 이미지 Json에 포트번호가 있는것을 확인했습니다. "ExposedPorts": { "3000/tcp": {} }, 제가 궁금한 부분1. "ExposedPorts" 의 "3000/tcp": 내부 컨테이너 포트번호는 별도로 세팅할 수 없나요? 2. 제가 시도하여 찾은 "ExposedPorts"의 "3000/tcp": {} 이 docker run -d -p 8080:3000명령어의 :3000 과 같나요? 3. 8080:3001 로 내부 컨테이너 포트번호를 변경 시 컨테이너 실행은 정상적으로 되지만 왜 Nginx에 접속할 수 없는 걸까요?
-
해결됨개발자를 위한 쉬운 도커
섹션4. 이미지 빌드에서 이미지 커밋이 안되는 현상이 있어 문의드립니다.
안녕하세요. 강의에서 말씀하신 docker commit -m "edited index.html by devwiki" -c 'CMD ["nginx", "-g", "daemon off;"]' officialNginx kimminho0428/commitnginx:1.0위의 커맨드로 official Nginx 커밋을 시도했으나 commit이 되지 않아 문의드립니다.docker ps 명령어로 확인할 때 nginx 컨테이너는 실행 중이나 이런 현상이 발생했습니다.문법상의 오류로 보이는데 답변부탁드립니다.감사합니다.
-
해결됨AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
캐싱 관련 질문 드립니다.
선생님 안녕하세요.MongoDB에 이어 infra 관련 강의도 잘 수강하고 있습니다.캐싱 관련되어 선생님 의견이 궁금해 질문드립니다. 백그라운드현재 MongoDB + Nest.JS를 사용해 WAS를 구축한 상태입니다.도큐먼트 안에 서브 도큐먼트들이 array 형태로 들어가도록 Model을 설계했는데요, 서브 도큐먼트를 가져올 때 aggregation을 사용해 페이지네이션을 적용했습니다.(처음에 설계 시, 잘 못 생각해 이러한 설계를 하긴 했습니다..)aggregation에는 성능 문제가 따라올 위험이 있을까봐 해당 GET 요청 컨트롤러에는 캐싱을 적용했습니다.문제가 되는 부분은 캐싱처리로 인한 코드의 가독성 저하 입니다.WAS안에서 GET 요청 시 캐싱을 적용하고, POST, PUT, PATCH 요청시에는 캐싱을 지우고 있는데, 비즈니스 로직안에서 이를 처리하다보니 코드의 가독성이 급격히 떨어지더라고요. 제가 생각한 해결 방안이를 해결하기 위해 event emitter를 사용해 캐싱을 비즈니스 로직으로부터 떼어낼까 고민했습니다.다만 이 해결방안은 캐싱처리하는 로직 자체가 하나의 WAS에 존재하고 있어 추후에 또 비슷한 문제가 발생하지 않을까 생각이 들더라고요. 질문선생님께서는 이러한 문제 발생 시 캐싱 처리는 프록시 서버를 띄워서 앞단에서 미리 처리를 하시는지... 아니면 또 다른 좋은 방식으로 설계를 하시는지 궁금해서 질문드립니다.
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
create certificate 할때요..!
Attempting to validate your cerificate... 상태에서 아무리 기다려도 Valid 상태로 넘어가지지가 않습니다.이런경우는 어떤 경우인가요?
-
해결됨개발자를 위한 쉬운 도커
leafy-front end 부분 여쭤볼게 있습니다.
안녕하세요 docker 수업 잘 듣고 있습니다.다름이 아니라 frontend 부분 빌드한 후 /app/dist -> /usr/share/nginx/html하게 되면 404 error 가 뜨게 됩니다.conf file 에서 경로를 못찾는게 아닐까 합니다...그래서 확인해본 봐로는 /etc/nginx/nginx.confhttp { server { listen 80; # 삭제 가능 server_name localhost; #삭제 가능 location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; } }을 삽입 하면 잘 됩니다. 혹시 강의 하신 내용에서는 이부분이 없느데도 잘 작동하는데 이유를 알 수 있을까 해서 질문 드립니다.감사합니다.
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
안녕하세요 마지막 강의 질문 있습니다.
git actions에서 EB에 배포전에,docker hub에 이미지를 미리 배포하고,그 배포된 docker image 파일을 EB에서 실행한다고한다면,결국 Dockerrun.aws.json 파일만 EB에 배포하면 되는 것 아닌가요?- name: Generate deployment package run: zip -r deploy.zip . -x '*.git*'해당 코드는 소스파일과 그외 파일까지 전부 압축해서 S3에 업로드하자나요? Dockerr.aws.json 파일만 첨부해서는 작동이 안되나요?
-
해결됨개발자를 위한 쉬운 도커
도커파일 생성 에러
Dockerfile-000 이런식으로 파일명을 만들때 Dockerfile-basic까지는 빌드까지 완료하고 이미지로 만들었는데 Dockerfile-meta 만들때 갑자기 파일이 도커파일이 아닌 일반파일로 바껴서 빌드도 안되는데 뭐가 문제인걸까요?
-
해결됨개발자를 위한 쉬운 도커
명령어 종류에 따른 동작에 대해 질문이 있습니다.
안녕하세요. 컨테이너 동작에 대한 명령어 run/start에 대해 질문이 있습니다.두 명령어 다 -i옵션이 있지만 run명령어는 기본적으로 쉘에 컨테이너의 stdin을 잡는 반면 start명령어는 잡지않는것으로 보여서 옵션을 찾아보니 두 명령어 모두 -i옵션이 있긴한것으로 확인했습니다. 하지만 설명에 stdin을 잡아놓지 않은 경우에 옵션이 유효하다고 명시되어 있는것도 확인했는데,두 명령어에 대한 interactive 기본값이 다른것으로 해석하면 되는지가 궁금합니다.
-
해결됨개발자를 위한 쉬운 도커
사용자 로그인 정보 확인
강의 영상처럼 docker login 명령으로 로그인후 cat 명령어로 정보를 확인하려고 했지만 해당 파일이나 폴더가 없다고 나옵니다. 맥을 쓰고 있는데 저장경로가 달라서 그런걸까요?
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
ssh 터널링으로 vm 접속이 안됩니다.
안녕하세요.며칠 전에 올린 질문 내용과 동일합니다.rsa 키 삭제 후 다시 만들어서 lightsail 터미널에서 authorized_keys에 새로운 rsa.pub 키를 넣어서 다시 접속해봤는데도 접속이 거부됩니다.아무리 찾아보고 권한도 600으로 줘봤지만 해결이 되지 않습니다. 진도를 못 나가고 있는데 도와주세요..ㅠㅠ
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
[배포용 Workflow 만들기] 에러 해결과 아직 남은 에러
에러 해결 infogithub secres 에 SSH_PRIVATE_KEY 저장할때 로컬에서$ cat ~/.ssh/github_id_rsa (뒤에 pub 없는거 )이렇게 조회 한걸 저장 해야 deploy.yml 에서 ssh 연결시에 인증 정보 틀림에 의한 에러가 발생하지 않았습니다 run: | ssh ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_PUBLIC_IP }} " cd sample_express git pull || exit 1 npm install || exit 1 npm run build sudo pkill node || exit 1 sudo npm run start & npx wait-on http://localhost exit "그런데 아직 에러가 남아 있는데 코드가 반영된 이후에 에러가 발생 합니다.ex)에러가 발생한 코드name: deployon: push: branches: - mainjobs: deploy: runs-on: ubuntu-latest steps: - name: Set up SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa - name: Set up known hosts run: | echo "${{ secrets.SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts - name: SSH and deploy run: | ssh ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_PUBLIC_IP }} " cd sample-express2 sudo chown ubuntu:root .git/FETCH_HEAD sudo chmod +w .git/FETCH_HEAD chmod +w .git/FETCH_HEAD git pull || exit 1 npm install || exit 1 npm audit fix npm run build sudo pkill node || exit 1 sudo npm run start & npx wait-on http://localhost exit "
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
deploy.yml이 workflow에서 작동되지 않는 이유
섹션 4의 "배포용 Workflow 만들기"를 수강 중 deploy.yml이 진행되지 않습니다..test.yml은 진행이 잘 됩니다뭐가 문제일까요?.yml 파일 작성할 때 들여쓰기가 상관이 있나요?아래는 작성한 deploy.yml 파일입니다.추가로 한 탭씩 들여쓰기 하지 않고 중간 중간에 스페이스 두 번으로 들여쓰기 하는게 있는데, 규칙인가요?- (대시)기호 이것도 규칙인가요? 안 적으면 실행이 안되는건가요? name: deploy on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Set up SSH run: | mkdir -p ~/.ssh/ echo "${{secrets.SSH_PRIVATE_KEY}}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa - name: Set up known hosts run: | echo "${{secrets.SSH_KNOWN_HOSTS}}" >> ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts - name: SSH and deploy run: | ssh ${{secrets.SSH_USERNAME}}@${{secrets.SSH_PUBLIC_IP}} " cd express git pull || exit 1 npm install || exit 1 npm run build || exit 1 sudo pkill node || exit 1 sudo npm run start & || exit 1 sudo npm run start & npx wait-on http://localhost exit "
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
SSH 터널링으로 Lightsail VM 접속하기
안녕하세요..! 또 질문을 드려서 너무 죄송합니다.authorized_keys에 제가 만든 public 키를 추가를 해줬는데 터미널로 접속하려고 하니까 아래와 같이 접속이 거부됩니다..! 혹시나 키를 잘못 기입했나 해서 다시 복사해서 넣었는데도 저렇게 거부가 되는데 다른 이유가 있을까요?너무 죄송합니다..!!답변주시면 정말 감사드리겠습니다!
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
workflows 내용 질문입니다.
안녕하세요. 강의 잘 보고 잘 따라가고 있습니다! 우선 좋은 강의 제공해주셔서 감사 인사 드립니다!AWS lightsail 부분 수강하고 있는 와중에 workflows 내용에 대한 질문이 생겼습니다.여기 내용을 보면 npm 설치와 redis 설치가 포함되어있는데 저렇게 설치를 하는 곳은 가상 ubuntu 서버에 하는 거라고 보면 될까요? 이미 AWS lightsail 서버에는 node와 npm 및 redis 설치를 다 끝냈는데 매번 pull request 할 때마다 다시 설치가 되는건가 궁금합니다!같은 맥락으로 도커 이미지를 나중에 만들어서 빌드를 하게 된다면 매번 수정된 내용이 반영되는 이미지를 다시 만들어서 그 이미지를 빌드해서 배포를 하는 건가요? 질문은 이 정도로 마치겠습니다! 긴 질문 읽어주셔서 감사합니다.
-
해결됨개발자를 위한 쉬운 도커
컨테이너 런타임에 관한 질문이 있습니다.
컨테이너 런타임은 컨테이너를 생성 혹은 제거할때에만 관여하는건가요??
-
해결됨개발자를 위한 쉬운 도커
leafy 애플리케이션 구성 강의중 db 문제
안녕하세요, 강의 잘 수강하고 있습니다.강의중 db를 실행시키고 10분이자나도 ready가 안 된다면어떠한 문제가 있는 건가요?두세번 반복해서 실행해도 올라오지 않습니다.