문제상황
git push - travis ci에서 인식 - 이미지 빌드 - Docker hub에 이미지 push 까지는 되지만 eb에 배포하는 과정에서 인스턴스에서의 커맨드가 실패한다.
수정
.travis.yml 파일에서 오류가 발생하는건가 싶어 구글링 후 수정, Dockerfile.dev 도 수정했다.
<.travis.yml>
language: node_js - node
branches:
only:
- main
services:
- docker
before_install:
- openssl aes-256-cbc -K $encrypted_3c84dcdc6bbe_key -iv $encrypted_3c84dcdc6bbe_iv
-in .env.enc -out .env -d
- nvm install node
script:
- docker run -e CI=true --env-file .env tjddnjs7559/nemo_test npm run test
after_success:
- echo "TEST complete, sending image to hub..."
- docker build -t tjddnjs7559/nemo_test -f ./Dockerfile.dev .
- echo "$DOCKER_HUB_PASSWORD" | docker login -u "$DOCKER_HUB_ID" --password-stdin
- docker push tjddnjs7559/nemo_test
deploy:
- provider: elasticbeanstalk
access_key_id: $AWS_ACCESS_KEY
secret_access_key: $AWS_SECRET_ACCESS_KEY
region: ap-northeast-2
app: nemo_test
env: Nemotest-env
bucket_name: elasticbeanstalk-ap-northeast-2-291897759134
skip_cleanup: true
wait_until_deployed : true
on:
branch: main
<Dockerfile.dev>
# 노드를 베이스로 생성
FROM node:16.13.1
# app 디렉토리 , working 디렉토리 생성
RUN npm install -g nodemon
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install dependencies
COPY package*.json ./
RUN npm install
# Bundle app source
COPY . .
# Exports
EXPOSE 8088
---------
그래도 에러는 여전했다.
분명 after_success: 까지는 유효한데 deploy가 안되는걸 보니 docker-compose 혹은 dockerrun.aws.json에 문제가 있다고 판단했고.. 주말 내도록 aws 공식문서를 차근차근 읽었다..🤬🤣🤬🤣
Docker 구성 - AWS Elastic Beanstalk (amazon.com)
Docker 구성 - AWS Elastic Beanstalk
두 파일은 루트에 있거나, .zip 아카이브의 최상위에 있어야 합니다. 파일을 포함하는 디렉터리에서 아카이브를 빌드하지 마십시오. 해당 디렉터리로 이동한 후 아카이브를 빌드하십시오. 두 파
docs.aws.amazon.com
그리고 문제점을 파악했다.
기존에는 서버와 db의 이미지를 만들고 각각 컨테이너에 담아 docker-compose로 띄우는데
AWS rds를 사용하면서 사용할 컨테이너가 하나로 줄어들면서 dockerrun.aws.json의 버전을 다운그레이드 했어야했다.
+ docker-compose를 사용할 필요가 없다.
그래서 docker-compose.yml 파일을 과감히 삭제했고, dockerrun.aws.json 파일을 수정했다.
<dockerrun.aws.json>
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "tjddnjs7559/nemo_test:latest",
"Update": "true",
"essential": false,
"memory": 128
},
"Ports": [{ "ContainerPort": 8088 }]
}
travis CI 에서 deploy까지 잘 완료된 모습.
EB환경에서 배포까지 완료했다.
'[항해99]' 카테고리의 다른 글
항해 99 수료 후기 (0) | 2022.04.22 |
---|---|
DOCKER, TRAVIS CI, GITHUB, EB 연결 (2) - aws (EB) 연동 (0) | 2022.03.26 |
travis ci에서 ignore된 환경 변수(.env 파일) 사용하기 (0) | 2022.03.24 |
DOCKER, TRAVIS CI, GITHUB 연결 (1) (0) | 2022.03.24 |
프로젝트에 도커 도입 (0) | 2022.03.23 |
댓글