49,500원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
docker-compose-dev.yml 은 어떻게 실행하나요?
배포해주신 교안 대로 docker-compose.yml 과 docker-compose-dev.yml 으로 분리해서 작업했습니다. 그러면 docker-compose -up 을 하면 어떻게 docker-compose-dev.yml 을 가르키게 되는 걸까요?
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
compose-up mysql 관련 에러 뜨시는 분들
아래가 마주한 에러 및 경고 상황이며, 제가 해결한 방법 공유하는 내용입니다. 1. –initialize specified but the data directory has files in it. Aborting.2. Can't change permissions of the file 'ca-key.pem' 제 개발 운영체제는 다음과 같았습니다. - OS : Windows 10- IDE : VSC- Docker : V 20.10.14- Docker Desktop : 4.7.1 (77678)- Github Reopsitory : https://github.com/unchaptered/22-05-docker-react-proxy 1번 문제 원인 (추정) 1. Docker + MySQL 설정2. Windows 10 / Home 환경일 것3. 어떤 문제로 1번 이상 mysql_data 을 지웠을 경우4. 모든 캐시를 지우고 docker-compose 를 재시작 한 경우 2번 문제 원인 (추정) 1. MySQL v5.7 으로 명시한 분들 1번 Initial 문제 해결방법 / 우려 / 원인 / 참조글 이 포함되어있습니다. [해결방법]docker-compose.yml 파일에서 volume 항목 주석 처리 할 것 [우려]실제로 백앤드 개발환경에서 작업을 하는 경우에는 코드 수정 등으로 테스트를 다시 해야 되는 경우가 있습니다. 또한 개발 기간이 1주만 넘어가도 정크 데이터가 많이 쌓입니다. 이러한 경우 저는 데이터를 지우는 과정을 따로 하는데요.결국 개발 환경에서 Volume 이 주는 사이드 이펙트의 일부가 DB 를 지우는 것이고 크게 문제되지는 않을 것이라고 생각합니다. 실제 저희가 배포하게 될 버저넹서는 RDS 를 사용할 것이기 때문입니다. [원인]MySQL 초기화 과정부터 살펴보면,일반적으로 *.exe 파일로 설치하게 되면 이 부분이 명시적으로 드러나지만, 커맨드 쉘 혹은 컨테이너 등을 거치게 되면 이 부분을 최초에 바로 넣어주고 실행하게 되는 것 같습니다. 그러면 설치 과정에서 환경변수 파일들이 생성되고 사용가능한 상태에 도달하는 것 같습니다. 그 결과로 한번 docker-compose up 을 하고나면 ~/mysql/ 안에 새로운 폴더가 생기는 것을 체크하실 수 있습니다.다만 이 친구의 생성은 volume 옵션과 무관하게 생기는데(옵션을 지워도 생김) 왜 로컬 환경에 파일이 생성되는 지는 알 수 없습니다. 그러한 초기화 환경 에서 강의에서는 volume 옵션을 사용하여 변화가 되는 부분만 실행되게 만들어주신 것 같습니다. 결과적으로 DROP DATABASE IF EXISTS 구문은 수정하지 않을 시에, 실행 되지 않게 되어서 운영환경에서 데이터가 보존되는 것입니다. 문제가 되는 지점은 여기인데요.VOLUME 에 지정된 파일은 docker 가 관리하는 컨테이너 파일이 아니라, 파일 시스템상 디랙토리 로 취급됩니다. 자 그러면 이 부분이 왜 문제가 되었는가 추측을 해보면,특정한 이슈가 있으셔서 컨테이너를 지우고 다시 만든 경우 가 있다고 한다면 아래 세 가지 코드로 깔끔하게 지울 수 있습니다. 1. docker-compose down --volumes2. docker system prune --volumes3. docker rmi $(docker images -q) 이렇게 되면, 이미지/컨테이너/볼륨 이 전부 제거가 되는데요. 이렇게 한 번 제거를 하고 나서 docker-compose up 을 시키고 나면 그떄부터 -initial ~~~ 에러가 지긋지긋하게 저를 따라다닙다. 관련된 내용이 Stackoverflow 에 나와있었으나,솔직히 도커, 리눅스 등에 대한 이해도도 떨어져서 솔루션을 찾을 수 없었습니다. 그러나 강사님께서 제공해주신 교안 파일 및 github repo 를 보면 mysql 은 RDS 를 사용하기 때문에 이러한 문제를 외면해도 되는 것일까 라는 방법을 생각했습니다. 결과적으로 compose-docker.yml 에서 mysql: volume: 항목을 전부 주석 처리해주시면 이 문제가 발생하지 않습니다. [참조글] Stackoverflow - docker-compose volume 에러 (아마도 같은 수강생 분이 남긴 질무닝 아닐까 싶네요 하하)programmerah - Linux error -initialization 에러 2번 문제 [해결방법]mysql: 5.7 을 mysql:5.7.16 으로 명시 [원인]mysql: 5.7 이라고 적게되면,그 뒤에 상세 버전을 가장 최신 으로 설치하게 되는데 그 버전에서 경고 문구가 뜬다는 내용이 있습니다. 혹시 경고 문구가 찜찜하시다면 아래 참조 포스트 혹은 구글링 해보시는 것을 추천드립니다. [참고글]Github Issue - Can't change permissions of the file 'ca-key.pem'
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
no such file or directory, open '/app/package.json'
### 한줄 요약 개별 컨테이너 에서는 build, run 이 정상적으로 되며, package.json 이 존재하지만docker-compose 로 실행할 경우에만 package.json 을 찾을 수 없다는 에러가 발생 # System OS : Windows 10IDE : VSCDocker : V 20.10.14Docker Desktop : 4.7.1 (77678)Github Reopsitory : https://github.com/unchaptered/22-05-docker-react-proxy ### 발생한 에러 docker-compose up / docker-compose up --build 시,backend, frontend 모두 /app/package.json 을 찾을 수 없다는 에러 발생. ### 예상되는 원인 0. Dockerfile 등에서 오탈자 있는 경우1. package.json 이 없는 경우2. package.json 이 있는데 잘못된 경로로 연결을 시도한 경우 ### 0번 확인 Dockerfile, yml, conf 에서 유의미한 옽라자를 찾을 수 없었습니다.관련하여 깃허브 레포 업로드해두겠습니다. ### 1번 확인 알 수 없는 이유로 docker-compose 의 빌드 후 실행이 되지 않았습니다.따라서 backend, frontend 컨테이너를 개별적으로 확인해야 했습니다. Backend 확인 결과 : 5000 포트에서 정상 실행 되었으나, MySQL 연결 실패 에러 발생 (compose 에러와 무관한 내용이라서 무시해도 될 것 같다고 생각했습니다.)0. (root 디렉토리)1. cd backend2. docker build -f Dockerfile.dev -t nchaptered/test-docker ./3. docker run unchaptered/test-docker4. docker exec -it 컨테이너_ID sh5. ls6. cat package.json Frontend 확인 결과 : 3000 포트에서 정상 실행 되었습니다. 0. (root 디렉토리)1. cd frontend2. docker build -f Dockerfile.dev -t unchaptered/test-docker-f ./3. docker run unchaptered/test-docker-f4. docker exec -it 컨테이너_ID sh5. ls6. cat package.json ### 2번 확인 1. docker-compose up --build2. Running 5/5/ build 정상 실행 - Network 22-05-docker-multi-react_default Created - Container app_backend Created - Container app_frontend Created - Container app_mysqlA Created - Container app_nginx Created 3. Attaching to app_backend, app_frontend, app_mysqlA, app_nginx - app_backend Error 254 : erno -2 no such file or directory, open '/app/package.json' - app_frontend Error 254 : erno -2 no such file or directory, open '/app/package.json' - app_mysqlA Success : ready to connection, Version '5.7.38' - app_nginx 결국은 빌드는 되는데 실행이 안되는 것 같습니다. 그 이유가 /app/package.json 인 데, 애초에 실행이 안되니 exec -it 컨테이너명 sh 으로 확인이 불가능한 상태입니다. 해당 부분에서 어떤 방식으로 접근 해야 할지 알려주시면 감사하겠습니다.
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
단일 어플리케이션 배포
안녕하세요 강의 너무 잘듣고있습니다. ㅎㅎ 지금 현재 단일 어플리케이션 배포부분 다시 복습으로 듣고있는데요 . 지금은 프론트 하나로 배포를 하고있잖아용 . 그럼 보통 회사에 프론트와 백엔드가 각각 따로있다고하면 , 어떻게 이루어지나요 ?? 그냥 하나의 docker compose 로 묶어버리나요 ?? 아니면 front 에 docker compose 하나 back 에 docker compose 하나 해서 docker compose 가 두개인가요 ?? ( 중소 혹은 스타텁기준)
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
docker node_module 제거
안녕하세요 질문을 하기전에 질문들을 봤는데 , npm install 로 node_module 이 설치되고 , local 머신에서 copy 될때 한번 더 node_module 이설치된다하셨는데 , gitignore 가 있듯이 .dockerignore 파일이 존재하는건가요 ?? 밑에 어떤 분이 질문 주셨네용 그럼 여기다가 node_modules 를 적어줘서 하면 되는거죠 ?? ㅎㅎ
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
가장 최신 버전인 4.18+ 에서는 body parser 는 @depreacted 되었습니다.
정확히 말하자면 express 에 내장 된 것으로 알고 있습니다. 따라서, req.body 를 받기 위해서는 아래처럼 작성하시면 됩니다. app.use(express.urlencoded({ extended: true })); app.use(express.json());
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
npm audit fix 사용하지 말 것
강의 중에는 되도록 npm audit fix 를 사용하지 않을 것을 권장 드립니다.npm audit fix 를 사용하면 버전이 package.json 과 실제 설치된 파일이 있는 pacakge-lock.json 이 달라지는 이슈가 있는 걸로 알고 있습니다. 이러한 경우 간혹가다가 메서드가 사라지거나 이름이 바뀌는 등의 이상한 일이 일어날 수 있습니다.
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
docker-compose down 보다 쉬운 컴포즈 끄기!
docker-compose up 과 docker-compose down 외에도 선택지가 있어서 남기게 되었습니다.제목은... 어그로.... 일지도... 모르겠습니다. docker-compose up -d 가 아니라 docker-compose 를 사용하신다면,컨테이너 실행 결과가 보여지는 창에서 Ctrl + C 를 누르시면 docker-compose.yml 의 개별 컨테이너에 각각 docker stop 을 실행 하여 줍니다. 이후에 docker-compose ps 를 입력하시면 다 지워진 것을 체크할 수 있습니당.
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
오타로 인한 connect ECONNREFUSED 127.0.0.1:6379 [duplicate] 겪으시는 분들!
Redis 는 별도로 설정을 건드리지 않았다면, 기본적으로 `6379` 포트에서 돌아가고 있습니다. 하지만 이를 `6679` 과 같이 오타를 낸 상태로 `docker-compose up` 을 실행할 경우`connect ECONNREFUSED 127.0.0.1:6379 [duplicate]` 와 같은 에러가 발생합니다. 이후, `6379` 로 수정한 후에 재실행을 하여도 계속에서 `6679` 로 연결이 되는데요.해당 문제의 원인(가설) 과 해결방법 을 안내해드립니다만, 이런 문제를 겪으실 분이 있으실지는 모르겠네요. ### 원인 (가설) 1. docker 의 cache 기능에 의한 오류 | docker 는 특정한 값들을 cache 해두고 있으며, 이러한 변수들은 수정을 하여도 반영하지 않는다?따라서 cache 를 비우고 실행햐아 한다? 이 부분에 대해서 불확실하기에 강사님께서 코멘트를 남겨주시면 감사하겠습니다. : ) ### 해결 방법 1. 실행 중인 docker-compose up 쉘에서 Ctrl+C 로 컨테이너 종료2. docker ps 로 다시 한 번 확인 후 실행 중인 컨테이너 종료3. docker hub 로 들어가서 docker image 를 찾고 node, redis, node-app 컨테이너 삭제 node-app 은 프로젝트 폴더 경로로 설정되어있을 확률이 높음4. 모든 종속성 및 프로젝트 이미지를 삭제하고 docker-compose up 을 실행 시 정상적으로 진행 아마도 이 방법보다 쉬운 방법 이 있었을 텐데,저는 docker 를 잘 몰라서 node_modules 에 문제가 생기면 전부 지우고 다시 까는 것 에서 착안해서 해결했습니다.
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
간단한 어플을 실제로 배포해보기(개발 환경 부분) 에서 docker compose
안녕하세요 ㅎㅎ 우선 강의 너무 잘 듣고있습니다. 강의를 듣다가 docker compose 는 사용 용도가 container 가 여러개가 있을때 아무런 설정없이는 container 끼리 소통이 안되기때문에 , docker compose 를 이용해야한다고 말씀하셨는데요 . 그냥 단일 어플리케이션 react 만 이용했을때 , volume 을 이용하시다가 이름이 길다는 이유로 그럼 docker compsoe 를 이용하셨는데 , 그럼 보통 단일 container 를 이용할때도 docker compose 를 이용하기도 하나요 ?
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
travis ci 사용불가
travis ci를 사용할 수 없어서 혹시 docker image를 travis ci 사용하지 않고 elastic beanstalk에 배포 할 수 있나요??
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
nginx 에서 "GET /ws HTTP/1.1" 404 141 이라는게 나오는데 이게 무슨뜻일까요??
값을 입력하고 잘 나오는것 까진 확인 했습니다. 아래와 같은 워닝이 계속 나오는거 같은데 의미를 여쭤봐도 될까요?
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
설계방식
안녕하세요 ㅎㅎ 강의 잘 듣고있습니다 정말 많은 도움을 받고있네요 . 질문이 있는데요. 복잡한 어플 배포 방식에서 두가지 소개하셨는데 , 제가 보기로 두개다 port 번호가 달랐는데 , 왼쪽에 url 이 같지만 end포인트도 port 번호를 다르게 하고 , 오른쪽엔 port 번호만 다르게 설정하는 방식인가요 ??
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
travis 파일에 before_install 에 왜 dockerfile.dev 로 빌드를 하는건가요?
강의에서 사용한 travis 파일에서 docker build 시, dockerfile.dev 를 이용한걸로 보이는데요, 그렇게 하지 않고 그냥 dockerfile 로 진행한 결과 nginx 를 실행할때 npm not found 가 나옵니다. 이 에러는 어떻게 처리 해야 할까요?
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
docker-compose up 실행 시, mysql Error 발생 건
_mysql | 2022-04-19T20:28:50.252328Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting. app_mysql | 2022-04-19T20:28:50.252404Z 0 [ERROR] Aborting 안녕하세요. 현재 docker-compose up 로 실행을 시켜 보니 위와 같은 Error가 발생되서 Website (localhost:3000)에서 화면이 정상적으로 뜨지 않네요. 인터넷에서 찾아 봤지만 특별히 어떤 단계로 해결을 해야 할지 잘 모르겠습니다. 참고로 docker-compose.yml에서 mysql 부분은 아래와 같이 했습니다. mysql: build: ./mysql restart: unless-stopped container_name: app_mysql ports: - "3306:3306" expose: - 3306 volumes: - ./mysql/mysql_data:/var/lib/mysql - ./mysql/sqls/:/docker-entrypoint-initdb.d/ environment: MYSQL_ROOT_PASSWORD: danielsong1052 MYSQL_DATABASE: myapp
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
volumn기능이 동작하지 않네요(docker run & docker-compose.yml 파일)
Dockerfile.dev 빌드 후 docker build -f Dockerfile.dev -t nhj/docker-react-app ./ docker run -it -p 3000:3000 -v /usr/src/app/node_modules -v ${PWD}:/usr/src/app nhj/docker-react-app volume 기능이라면, App.js 소스 수정시 자동반영(hot deploy)되어야 하는데 반영이 안되네요 docker-compose.yml 로 docker-compose build up 해서 App.js 소스 수정해봐도 수정된 부분이 반영이 안됩니다 ㅠ
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
입력창에 텍스트입력시 빈텍스트 저장
사진과 같이 텍스트 입력 후 확인버튼 클릭시 텍스트가 표기되지 않습니다. console에선 results undefined라고 뜨는데 이유알 수 있을까요? https://github.com/xngsoo/docker-fullstack-app 깃주소첨부합니다.
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
docker-fullstack-app 실행 에러 문의
강의를 들으면서 하나하나 따라하면서 실습을 해보고 있습니다. 나름대로 따라 적었다고 하는데 계속 에러가 발생해서 어쩔 수 없이 Git에서 다운받아 docker-fullstack-app 을 실행해봐도 에러가 발생합니다. http://localhost:3000 을 하면 아래처럼 Nginx 에러가 화면에 뜹니다. 502 Bad Gateway nginx/1.21.6 http://localhost:3000/api/hi 하면 backend는 정상응답합니다. docker-compose up --build 하면 아래와 같은 메시지가 보이긴 합니다. docker-fullstack-app-frontend-1 | Starting the development server... docker-fullstack-app-frontend-1 | docker-fullstack-app-frontend-1 | /app/node_modules/react-scripts/scripts/start.js:19 docker-fullstack-app-frontend-1 | throw err; docker-fullstack-app-frontend-1 | ^ docker-fullstack-app-frontend-1 | docker-fullstack-app-frontend-1 | Error: error:0308010C:digital envelope routines::unsupported docker-fullstack-app-frontend-1 | at new Hash (node:internal/crypto/hash:67:19) docker-fullstack-app-frontend-1 | at Object.createHash (node:crypto:135:10) docker-fullstack-app-frontend-1 | at module.exports (/app/node_modules/webpack/lib/util/createHash.js:135:53) docker-fullstack-app-frontend-1 | at NormalModule._initBuildHash (/app/node_modules/webpack/lib/NormalModule.js:417:16) docker-fullstack-app-frontend-1 | at /app/node_modules/webpack/lib/NormalModule.js:452:10 docker-fullstack-app-frontend-1 | at /app/node_modules/webpack/lib/NormalModule.js:323:13 docker-fullstack-app-frontend-1 | at /app/node_modules/loader-runner/lib/LoaderRunner.js:367:11 docker-fullstack-app-frontend-1 | at /app/node_modules/loader-runner/lib/LoaderRunner.js:233:18 docker-fullstack-app-frontend-1 | at context.callback (/app/node_modules/loader-runner/lib/LoaderRunner.js:111:13) docker-fullstack-app-frontend-1 | at /app/node_modules/babel-loader/lib/index.js:59:103 { docker-fullstack-app-frontend-1 | opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ], docker-fullstack-app-frontend-1 | library: 'digital envelope routines', docker-fullstack-app-frontend-1 | reason: 'unsupported', docker-fullstack-app-frontend-1 | code: 'ERR_OSSL_EVP_UNSUPPORTED' docker-fullstack-app-frontend-1 | } 사용하는 노트북은 맥북프로(인텔)입니다.
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
aws ecs를 통한 멀티컨테이너 배포
존안님 혹시 aws-ecs를 통해서 멀티컨테이너 배포하는 방법을 여쭤봐도 괜찮을까요?
- 미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
travis.yml before_install 문의
9강 travis.yml 파일작성하기에서의 문의 입니다. before_install: 에서 image 빌드를 하는데, ./frontend/Dockerfile.dev를 참고하도록 되어 있습니다. script: 에서 docker를 run을 해주는데요,이 이미지로 도커를 실행하여 npm run test를 합니다. after_success: 에서 다시./frontend Dockerfile 로 docker-frontend 이름으로 이미지를 다시 만드는데요, ./frontend 디렉토리 안에서 Dockerfile과 Dockerfile.dev를 구분해서 만들고,before_install:에서 만드는 이미지와 after_success:에서 만드는 도커 이미지를 다르게 이름을 가져가야할 필요가 있는 지, 있다면 그 이유를 알고 싶습니다.travis-ci에서 docker-front 이미지가 만들어지지 않아서 문의 드립니다. [front-end 이미지 생성안되는 로그] $ docker build --no-cache --pull -t travisci123/docker-frontend ./frontend unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/travis/build/travisci123/docker-multi-app-101/frontend/Dockerfile: no such file or directory [befor_install: 부터 script:까지 로그] 0.00s$ echo "start creating an image with dockerfile" before_install.2 70.74s$ docker build -t travisci123/react-multi-app-101 -f ./frontend/Dockerfile.dev ./frontend before_install.3 0.00s$ echo "start creating an image with dockerfile" before_install.4 67.20s$ docker build --no-cache --pull -t travisci123/react-multi-app-101 -f ./frontend/Dockerfile.dev ./frontend 3.42s$ docker run -e CI=true travisci123/react-multi-app-101 npm run test > frontend@0.1.0 test > react-scripts test PASS src/App.test.js ✓ renders learn react link (2 ms) Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 total Time: 1.61 s Ran all test suites. The command "docker run -e CI=true travisci123/react-multi-app-101 npm run test" exited with 0. 3.42s$ docker run -e CI=true travisci123/react-multi-app-101 npm run test > frontend@0.1.0 test > react-scripts test PASS src/App.test.js ✓ renders learn react link (1 ms) $ docker build --no-cache --pull -t travisci123/docker-frontend ./frontend unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/travis/build/travisci123/docker-multi-app-101/frontend/Dockerfile: no such file or directory