728x90
ECS를 이용하게 되면서 환경변수 설정에 꽤 애를 먹게 되었다.
Dockerfile에서 환경변수를 설정하여 넘겨야 한다는 글도 보았고, Github Actions PipeLine Script에서 변수를 설정하여 넘기라는 글도 보았다.
다양한 방법이 있을 수 있고, 성공했겠지만 나는 내가 성공한 방법을 공유하려고 한다.
task_definition 설정
일단 task_definition.json에 접속하여서 environment 부분을 찾아본다.
{
"containerDefinitions": [
{
"environment": []
}
]
}
해당 "environment" 부분에 {}을 사용하여 각각 변수를 입력한다.
"name"과 "value"로 지정하며, 나는 github repository의 secret variable를 사용할 예정이므로, 해당 문법에 맞게 "${{ secret.변수명 }}"을 작성하였다.
여러 개를 작성할 경우 {} 이후 ","(콤마)로 구분한다.
{
"containerDefinitions": [
{
"environment": [
{
"name": "SPRING_DATASOURCE_URL",
"value": "${{ secrets.SPRING_DATASOURCE_URL }}"
},
{
"name": "SPRING_DATASOURCE_PASSWORD",
"value": "${{ secrets.SPRING_DATASOURCE_PASSWORD }}"
}
]
}
]
}
이런 식으로 두 값을 입력하였다.
Github Action Workflow
ECS를 통한 배포를 이용해야 하므로, 해당 스크립트를 기준으로 작성하였다.
...
name: Deploy to Amazon ECS
on:
push:
branches: [ "main" ]
env:
AWS_REGION: # set this to your preferred AWS region, e.g. us-west-1
ECR_REPOSITORY: # set this to your Amazon ECR repository name
ECS_SERVICE: # set this to your Amazon ECS service name
ECS_CLUSTER: # set this to your Amazon ECS cluster name
ECS_TASK_DEFINITION: ./task_definition.json # set this to the path to your Amazon ECS task definition
CONTAINER_NAME: # set this to the name of the container in the
permissions:
contents: read
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
environment: production
steps:
...
- name: Fill in the new image ID in the Amazon ECS task definition
id: task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: ${{ env.ECS_TASK_DEFINITION }}
container-name: ${{ env.CONTAINER_NAME }}
image: ${{ steps.build-image.outputs.image }}
environment-variables: |
SPRING_DATASOURCE_URL=${{ secrets.SPRING_DATASOURCE_URL }}
SPRING_DATASOURCE_PASSWORD=${{ secrets.SPRING_DATASOURCE_PASSWORD }}
...
Step 중 Fill in the new image ID in the Amazon ECS task definition 부분의 with의 image: ${{ steps.build-image.outputs.image }} 하단에 environment-variable를 추가한다.
해당 부분처럼 진행을 하게 되면
컨테이너에 환경 변수가 잘 올라가는 것을 확인할 수 있다.
반응형
'Server > Infra' 카테고리의 다른 글
[Docker] 도커 설치 MacOS (0) | 2023.10.11 |
---|---|
[원티드 프리온보딩] AWS - 0 (0) | 2023.05.09 |
[CI/CD] AWS ECS, ECR을 사용하여 Docker CI/CD 구축 (0) | 2023.03.14 |
[AWS] ECR 이미지 푸시 명령 (0) | 2023.03.09 |
[AWS] AWS CLI 및 Docker 설치 (0) | 2023.03.09 |