묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨개발자를 위한 쉬운 도커
copy-on-write 전략에 대해 추가 질문 있습니다.
안녕하세요 전에 copy-on-write 전략에 대해 질문을 했는데 추가 질문이 있어 질문글을 작성합니다.https://www.inflearn.com/community/questions/1307477/copy-on-write-%EC%A0%84%EB%9E%B5%EC%97%90-%EB%8C%80%ED%95%B4-%EC%A7%88%EB%AC%B8-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4위 질문 글에서 2번 부분에 대해 추가 질문이 있습니다.읽기/쓰기 레이어에서 index.html 파일을 여러번 수정하는 경우에 대해서 궁금한 부분이 있습니다.완전 처음에는 얘기 해주신대로 읽기/쓰기는 텅 비어 있는 상태라 읽기 레이어의 index.html 파일을 그대로 복사해 와서 바뀐 부분만 있으면 수정한 후 사용합니다.여기서 읽기/쓰기 index.html 파일이 한번 더 수정이 되면 읽기 레이어의 index.html 파일을 복사해 와서 기존에 있는 읽기/쓰기 레이어에서의 index.html 파일에서 바뀐 부분만 복사해온 index.html 파일에서 변경한 후 사용하는건가요?정리하면 읽기/쓰기 index.html 파일을 여러번 수정해도 복사해서 가져오는 부분은 항상 읽기 index.html 파일이고 기존 읽기/쓰기 index.html 파일에서 바뀐 부분을 읽기 레이어에서 가져온 index.html 파일에 넣어서 만드는 건지 궁금합니다.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
역할과 정책에 관한 질문
IAM 설정을 처음해보면서 역할과 정책에 대한 개념이 아직 제대로 이해되지 않은거 같아 질문드립니다.'다른 AWS 리소스에 접근하기 위해선 역할이나 사용자를 생성해 그 안에서 정책을 연결해서 권한을 부여해야한다.' 이렇게 이해했는데 맞을까요?ec2에서는 역할을 만들때 정책을 생성했는데 CodeDeploy에서는 정책을 설정하지 않아도 되는 이유가 궁금합니다.EC2 인스턴스는 역할 연결을 통해, github actions는 엑세스 키를 통해 권한을 부여받는다고 이해했는데 맞을까요?
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
도커 이미지 푸시까지는 성공하나, ssh에서 fail이 나옵니다.
강의 및 노션에 있는 부분을 최대한 응용해서, next.js app을 생성중입니다.ecr 저장소에서 도커 이미지가 확실히 푸시되었지만, ssh접속에서 에러가 발생했습니다.======CMD====== docker stop instagram-server || true docker rm instagram-server || true docker pull 767398114270.dkr.ecr.ap-northeast-2.amazonaws.com/instagram-server:latest docker run -d --name instagram-server -p 3000:3000 767398114270.dkr.ecr.ap-northeast-2.amazonaws.com/instagram-server:latest ======END====== err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/containers/instagram-server/stop": dial unix /var/run/docker.sock: connect: permission denied err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Delete "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/containers/instagram-server": dial unix /var/run/docker.sock: connect: permission denied err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/images/create?fromImage=767398114270.dkr.ecr.ap-northeast-2.amazonaws.com%2Finstagram-server&tag=latest": dial unix /var/run/docker.sock: connect: permission denied 2024/08/13 11:11:21 Process exited with status 1그래서 workflow를 수정했는데, 밑에 처럼 진행하니 정상처리가 되었습니다.- name: SSH로 EC2에 접속하기 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.EC2_HOST }} # 인스턴스의 퍼블릭 IP 또는 DNS 이름 username: ${{ secrets.EC2_USERNAME }} # 일반적으로 'ubuntu' 또는 'ec2-user' key: ${{ secrets.EC2_PRIVATE_KEY }} # SSH 개인 키 script_stop: true script: | aws ecr get-login-password --region ap-northeast-2 | sudo docker login --username AWS --password-stdin ${{ steps.login-ecr.outputs.registry }} sudo docker stop instagram-server || true sudo docker rm instagram-server || true sudo docker pull ${{ steps.login-ecr.outputs.registry }}/instagram-server:latest sudo docker run -d --name instagram-server -p 3000:3000 ${{ steps.login-ecr.outputs.registry }}/instagram-server:latest혹시 제가 실수하거나 놓친 부분이있을까요??
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
배포는 성공하지만, pm2 list를 확인해보면 에러가 발생이 되어있습니다.
해당 부분을 응용해서, aws linux / next.js를 진행하고 있었습니다. 앞선 강의는 잘 되었으나, 해당 강의해서 어려움을 겪게되어 질문을 남기게 되었습니다.우서 배포를 확인해보니 성공, s3버킷에는 압춗파일이 잘 올라갔습니다.ls를 통해서 디렉토리까지 생성이 되는것을 확인하였습니다.하지만 node_modules가 설치가 안되어 log를 확인해보니,아래와 같은 에러가 발생합니다. 혹시 설정에 문제가 있을까요? cd: /home/ec2-user/instantgram-server: No such file or directory 2024-08-12 15:00:19 [stderr]npm ERR! Tracker "idealTree" already exists 2024-08-12 15:00:19 [stderr] 2024-08-12 15:00:19 [stderr]npm ERR! A complete log of this run can be found in: /home/ec2-user/.npm/_logs/2024-08-12T15_00_19_547Z-debug-0.log 2024-08-12 15:00:20 [stdout][PM2] Spawning PM2 daemon with pm2_home=/home/ec2-user/.pm2 2024-08-12 15:00:20 [stdout][PM2] PM2 Successfully daemonized 2024-08-12 15:00:20 [stderr][PM2][WARN] No process found 2024-08-12 15:00:20 [stdout][PM2] [v] All Applications Stopped 2024-08-12 15:00:20 [stdout][PM2] [v] PM2 Daemon Stopped 2024-08-12 15:00:21 [stdout][PM2] Spawning PM2 daemon with pm2_home=/home/ec2-user/.pm2 2024-08-12 15:00:21 [stdout][PM2] PM2 Successfully daemonized 2024-08-12 15:00:21 [stdout][PM2] Starting /usr/bin/npm in fork_mode (1 instance) 2024-08-12 15:00:21 [stdout][PM2] Done.#appspec.yml version: 0.0 os: linux files: # S3에 저장한 파일들 중 destination(AWS EC2)으로 이동시킬 대상을 지정한다. # / 이라고 지정하면 S3에 저장한 전체 파일을 뜻한다. - source: / # EC2의 어떤 경로에 저장할 지 지정한다. destination: /home/ec2-user/instagram-server permissions: - object: / owner: ec2-user group: ec2-user hooks: ApplicationStart: - location: scripts/start-server.sh timeout: 60 runas: ec2-user#deploy.yml name: Deploy To EC2 on: push: branches: - master jobs: Deploy: runs-on: ubuntu-latest steps: - name: Github Repository 파일 불러오기 uses: actions/checkout@v4 # Github Repository의 파일을 가져오는 Action - name: Node.js 설치 uses: actions/setup-node@v4 # Node.js를 설치하는 Action with: node-version: 18.x # Node.js 버전 - name: 의존성(라이브러리) 설치 run: npm ci # npm ci는 package-lock.json에 있는 의존성을 설치하는 명령어 - name: .env 파일 만들기 run: | echo '${{ secrets.ENV }}' > .env - name: 테스트 코드 실행 run: npm run test - name: 빌드 run: npm run build # 빌드 - name: 압축하기 run: tar -zcvf $GITHUB_SHA.tar.gz appspec.yml scripts public .next .env package.json package-lock.json # 압축 - name: AWS Resource에 접근할 수 있게 AWS credentials 설정 uses: aws-actions/configure-aws-credentials@v4 with: aws-region: ap-northeast-2 aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCRESS_KEY }} - name: S3에 프로젝트 폴더 업로드하기 run: aws s3 cp --region ap-northeast-2 ./$GITHUB_SHA.tar.gz s3://instagram-server-s3/$GITHUB_SHA.tar.gz - name: Code Deploy를 활용해 EC2에 프로젝트 코드 배포 run: aws deploy create-deployment --application-name instagram-server --deployment-config-name CodeDeployDefault.AllAtOnce --deployment-group-name Production --s3-location bucket=instagram-server-s3,bundleType=tgz,key=$GITHUB_SHA.tar.gz #start-server.sh #!/bin/bash echo "-----------------서버 바로 배포 시작-----------------" cd /home/ec2-user/instantgram-server npm i pm2 kill pm2 start npm --name "my-next-app" -- start echo "-----------------서버 바로 배포 끝-----------------"
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
구글링해서 나온건 다따라해봤는데 ,...안돼네요 강사님 하신거랑 똑같이했는데 메시지는 키값을못찾는다고나오는거같은데...이거 방법이 없을까요
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
질문입니다.
비전공자도 이해할 수 있는 AWS 입문/실전 인강을 다 듣고 비전공자도 이해할 수 있는 CI/CD 입문·실전 을 들으려고 하는데 강의가 겹치는것 같아요? 어디서부터 들으면 될까요?
-
해결됨개발자를 위한 쉬운 도커
--no-daemon 옵션에 대한 질문
안녕하세요. 데브위키님의 강의를 통해 많은 것을 배우고 있습니다. 정말 감사드립니다.이번에 강의를 시청하다가 --no-daemon 옵션의 역할에 대해 궁금한 점이 생겨 질문을 드리게 되었습니다. 이 옵션이 정확히 어떤 상황에서 사용되는지, 그리고 어떤 효과를 가지는지 알고 싶습니다.답변 주시면 감사하겠습니다.
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
[질문] docker.service is masked 로 나옵니다.
다운받은 docker 이미지에 ssh 접속까지 잘되는데 거기서 docker 를 띄우려고 하면 masked 되어있다고 나옵니다.검색을 해봐서 systemctl unmask docker 또는 sysatemctl unmask docker.service 를 해봐도 mask 상태가 풀리지 않습니다. [root@27555416d6cd system]# systemctl status docker● docker.service Loaded: masked (Reason: Unit docker.service is masked.) Active: inactive (dead)[root@27555416d6cd system]# systemctl enable dockerFailed to enable unit: Unit file /usr/lib/systemd/system/docker.service is masked.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
gitignore 및 branch에 대한 질문
강의를 들으면서 궁금증이 생겼습니다.gitignore에 설정된 파일은 깃허브에만 노출되지 않는것인지, 아니면 git clone으로 프로젝트 다운 시에는 폴더 안에 존재하는지 궁금합니다.만약 clone으로 다운 시 존재하지 않는다면 다른 사람이 제 프로젝트를 clone 하더라도 로컬에서 제대로 돌아가지 않는 게 제 생각인데 맞을까요?ec2에서 현재 프로젝트에 여러 branch가 있을 때, 그 중에서 어떤 branch의 코드를 사용할지는 어떻게 정해지는지 궁금합니다.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
time out 질문
현재 github actions 실행할때마다 계속 Run Command timeout 뜨는 상태입니다. swap 생성을 해주었는데도 계속 실패하네요..아래는 yml 코드입니다.# Workflow의 이름 # Workflow : 하나의 yml 파일을 하나의 Workflow라고 부른다. name: Deploy To EC2 # Event : 실행되는 시점을 설정 # main이라는 브랜치에 push 될 때 아래 Workflow를 실행 on: push: branches: - step3 # 하나의 Workflow는 1개 이상의 Job으로 구성된다. # 여러 Job은 기본적으로 병렬적으로 수행된다. jobs: # Job을 식별하기 위한 id deploy: # Github Actions를 실행시킬 서버 종류 선택 runs-on: ubuntu-latest # Step : 특정 작업을 수행하는 가장 작은 단위 # Job은 여러 Step들로 구성되어 있다. steps: - name: SSH(원격 접속)로 EC2에 접속하기 # Step에 이름 붙이는 기능 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.EC2_HOST }} # IP 주소 username: ${{ secrets.EC2_USERNAME }} key: ${{ secrets.EC2_PRIVATE_KEY }} # 키페어 값 script_stop: script: | cd /home/ubuntu/spring-gift-point git pull origin step3 ./gradlew bootJar -x test sudo fuser -k -n tcp 8080 || true nohup java -jar build/libs/*SNAPSHOT.jar > ./output.log >&1 &
-
해결됨개발자를 위한 쉬운 도커
쿠버네티스 강의 오픈 언제 예정이신가요?
도커 강의 너무 잘 듣고있어서 쿠버네티스까지 같이 수강하고자 합니다.
-
해결됨실전! GitHub Actions으로 CI/CD 시작하기
시나리오2에서 여러 릴리즈 브랜치를 한 번에 운영환경에 배포
안녕하세요.이 그림에서 추가되는 기능의 횟수만큼 운영환경에 배포를 해야하는데 혹시 여러개의 기능을 모아 한 번에 배포하려면 어떤 방식을 사용하면 좋을까요?브랜치를 하나 더 만들어 릴리즈 브랜치들을 전부 머지한 후 직접 운영환경에 배포하는 방법 이외에 다른 좋은 방법이 있을까요?
-
미해결애플리케이션 배포 자동화와 CI/CD
stage view 가 안보여요
지금 빌드 했을때 강의화면에서 보여지는 Stage view 화면이 안나오는데 설정같은게 따로 있을까요?
-
미해결애플리케이션 배포 자동화와 CI/CD
webhook, jenkins 작동 안되는 문제
jenkins pipeline 스크립트 변경하셨으면 빌드 한번 실행 해야지 webhook으로 push가 들어왔을 때 자동 배포 되는 거 같습니다. 저도 어제까지 되다가 왜 안되지 하고 gpt에 계속 확인 했는데 Git, jenkins 둘 다 log로 통신이 잘되는 거 까진 확인해봤는데 정작 trigger에서 작동이 안됩니다.. 혹시나 해서 그냥 build 한번하고 github에 push 했더니 정상 작동하네요.. 저만 이런 건지 모르겠지만 혹시나해서 의견 남깁니다.
-
미해결실전! GitHub Actions으로 CI/CD 시작하기
처음 push.yaml 에서 actions로 넘어갈때
이화면이떠요 선생님과 다른화면이뜨는데 어떡하면되나요
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
현재 강의 진행 하기전에 하나씩 훑어 보고있는중에 질문이...
안녕하세요. 현재 강의 진행 하기전에 하나씩 훑어 보고있는중에 질문이 생겨서 질문을 드립니다.아무래도 인프라, 백엔드 쪽 코드에 중점으로 맞춰서 강의를 해주신 거 같습니다. 프론트 프레임워크도 강의 섹션이 있지만, vercel 혹은 s3, cloudfront로 진행을 해주셨는데, 이렇게 간단하게 아닌, next.js도 ec2, ecr, codebuild로 진행하고 싶습니다. js코드를 보면서 익히고 싶은데, 그나마 제가 보면서 대입하기 편한 강의는 nest.js로 보이는데, 이걸로 봐도 이해하는데 지장이 없을까요??
-
미해결AWS(Amazon Web Service) 중/상급자를 위한 강의
CloudFormation + SAM 실습 nodejs18.x 로 수정해야합니다.
CloudFormation + SAM 실습 nodejs18.x 로 수정해야합니다. 기존코드가 작동되지 않아 공유드립니다
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
DB 마이그레이션 방법 및 풀리퀘스트 거부 시 처리
안녕하세요 강의 잘 보고 있습니다~~강의를 듣다 의문점이 생겨 질문을 드립니다.전체적인 과정에 대해 생각해보다 나온 생각으로 하나의 강의에 직접적인 연관이 있지는 않습니다.개발 서버, QA, 스테이징 서버, 운영서버의 DB CI/CD는 현업에서 어떤 식으로 하나요?찾아본 결과 두 가지 방식이 있었습니다.Docker volumeFlyway 등 마이그레이션 라이브러리 사용만약 EC2 RDS를 사용하면 다른 서버에서도 그냥 DB를 사용해야 하는 게 아닌가 하는 생각이 듭니다. 개발서버는 Docker를 사용하고 운영서버에서는 RDS를 사용하는 식으로 하지는 않을 것 같은데 관련 내용이 궁금합니다.Docker volume을 사용하여 대량의 데이터를 관리하는 경우가 현업에서 있는지 궁금합니다.QA브랜치에서 테스트를 통과하지 못하면 수정 브랜치를 만들어 개발서버에 다시 머지하고 테스트하나요? QA브랜치 뿐만 아니라 다른 브랜치에 오류가 생기면 바로 머지 할 지(hotfix처럼), 개발 브랜치에 머지 해 테스트를 다시 할 지 선택하는 건지 궁금합니다.풀 리퀘스트가 거절되면 통합된 코드들은 어떻게 되는 지 궁금합니다. 항상 롤백이 되는 거라고 이해하면 될까요?쉽고 확실하게 설명해주셔서 많이 배웠습니다. 조금 더 확실히 하기 위해서 질문을 드립니다. 항상 감사합니다!!
-
미해결실전! GitHub Actions으로 CI/CD 시작하기
도커 볼륨 vs RDS, 롤백
안녕하세요 강의 잘 봤습니다.몇 가지 의문점이 생겨 질문을 드립니다.개발 서버, QA, 스테이징 서버, 운영서버의 DB CI/CD는 현업에서 어떤 식으로 하나요?찾아본 결과 두 가지 방식이 있었습니다.Docker volumeFlyway 등 마이그레이션 라이브러리 사용만약 EC2 RDS를 사용하면 다른 서버에서도 그냥 DB를 사용해야 하는 게 아닌가 하는 생각이 듭니다. 개발서버는 Docker를 사용하고 운영서버에서는 RDS를 사용하는 식으로 하지는 않을 것 같은데 관련 내용이 궁금합니다.Docker volume을 사용하여 대량의 데이터를 관리하는 경우가 현업에서 있는지 궁금합니다.QA브랜치에서 테스트를 통과하지 못하면 수정 브랜치를 만들어 개발서버에 다시 머지하고 테스트하나요? QA브랜치 뿐만 아니라 다른 브랜치에 오류가 생기면 바로 머지 할 지(hotfix처럼), 개발 브랜치에 머지 해 테스트를 다시 할 지 선택하는 건지 궁금합니다.풀 리퀘스트가 거절되면 통합된 코드들은 어떻게 되는 지 궁금합니다. 항상 롤백이 되는 거라고 이해하면 될까요?. 제가 잘 이해를 못한 부분이 있는 것 같아 확실히 하기 위해 질문을 남깁니다. 감사합니다~
-
해결됨개발자를 위한 쉬운 도커
docker os 에 관한 질문드립니다.
안녕하세요 수업 정말 잘 듣고 있습니다. 현재 맥북에서 도커 데스크탑을 설치하여 실습을 하고 있는데요. 문득 궁금한 점이 생겼습니다.맥북에서 도커를 실행하는 것이므로 host os 는 MacOS 라 생각됩니다.그런데 MacOS 의 커널과 리눅스 커널은 다를텐데 리눅스 커널 기술을 사용한다는 것이 이해가 잘 되지 않았습니다.그래서 구글링을 해보니 도커를 설치할 때 도커 엔진에는 경량화된 리눅스 OS 가 설치된다고 하더군요. 좀 더 조사해보니 리눅스 가상환경이 설치된다고 합니다. 이 안에 리눅스 커널이 있구요. 질문은 2가지가 있습니다. 그렇다면 컨테이너가 생성될 때 도커 엔진의 리눅스 커널에서 격리되는 것인가요? 호스트 OS 인 MacOS 커널에서 격리가 되는 것인가요? 만약 도커 엔진의 리눅스 커널에서 격리가 되는 것이라면 호스트 OS 의 커널과는 어떠한 관련성이 있는지 궁금합니다. 제 생각으로는 애초에 리눅스 가상환경이 만들어질 때 host os 의 자원 중 일부(예를 들어 10%)를 가져왔고 컨테이너 생성시에는 그 10% 자원의 리눅스 커널에서 격리시키는 것이 아닌가 의문이 들어서 질문드립니다.