틀린 내용이 있다면 언제든지 지적해주시면 감사하겠습니다🙇🏻♀️
지난 시간에 이어.. (https://velog.io/@becolorful/학습정리-배포하다-이러면-안되겠다-싶어-작성하는-네트워크-정리) 배포를 진행하면서 삽질한 내용들을 정리해본다.
Github Action + Docker 사용해 배포 진행.
아래와 같이 워크플로우가 동작할 디렉토리를 환경변수를 넣어놨는데..
jobs:
build:
runs-on: ubuntu-latest
env:
working-directory: ./BE/house
#워크플로우가 동작할 디렉토리
후략..
자꾸 빌드가 실패했다고 오류가 나는 것이었다??????
어디에서 잘못된건지 살펴보다 도커 빌드 하는 부분에서 working-directory를 써주지 않은 것을 발견했다.
# 도커 빌드(도커 이미지 생성)
- name: Docker build
working-directory: ${{ env.working-directory }}
run: |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}
후략..
위처럼 도커 빌드시에도 working-directory를 넣어주니 빌드가 성공적으로 진행됐다.
${S3_ACCESS_KEY} 환경변수를 읽어오지 못하는 문제가 발생했다.
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: 주소~~
username: ${MY_DATABASE_USERNAME}
password: ${MY_DATABASE_PASSWORD}
config:
import: classpath:oauth.yml
<중략...>
cloud:
aws:
region:
static: ap-northeast-2
s3:
bucket: house-image-bucket
stack:
auto: false
credentials:
access-key: ${S3_ACCESS_KEY}
secret-key: ${S3_SECRET_KEY}
(그럴리 없겠지만) S3 access key가 잘못되었을때 실패할까?
라는 생각이 들어 하드코딩으로 (예시 access-key: 임의의문자) 키값을 넣어놓고 실행하니 문제가 발생하지 않았다.
→ S3관련 요청이 있지 않는한 처음에 스프링을 띄울 때 문제가 될 것은 없다는 의미.
(혹시나 싶어) S3관련부분을 S3.yml로 분리하고 실행하니 초반에 발생하였던 문제(환경변수를 읽어오지 못하는 상황)가 발생하지 않았다.
여기서 드는 의문?
데이터베이스 관련한 것들도 환경변수로 읽어오는데 왜 S3 관련해서는.. 오류가 날까🤔 -> 아직 해결하지 못했다 학습 하자...
기본 내용을 항상 확인하자 나 자신아..
DB와의 통신이 되지 않았다.
앞서서 우리의 서버에서 DB에 연결할 수 있는지 확인.
(연결이 안된다면 라우팅 테이블, 서브넷, 보안규칙(인바운드)를 확인하자.)
그럼에도 불구하고 되지 않는다면..?
Sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
를 입력해서 mysqld.cnf
파일을 수정해줘야 한다.
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
위의 두 부분을 주석처리 하고 저장
아무렇지도 않게 8080포트로 요청을 보내고 있었다;;
80포트로 요청을 보내니 해결.
예시)http://서버IP주소:80/api
한참 쓸 때는 잘 기억하고 쓰다가.. 잠깐 안쓰면 까먹고.. 또 까먹고.. 해서 정리를 남긴다.
docker images: 도커 이미지 목록을 확인
docker ps: 현재 실행되고 있는 도커 컨테이너 목록 확인
docker ps -a: 실행/종료된 모든 도커 컨테이너 목록 확인
docker logs 컨테이너id: '컨테이너id'의 로그를 확인
docker run 이미지id: '이미지id'를 실행 (이때 -e 옵션으로 환경변수 설정 가능)
예시) docker run 4759e03f -e MY_DATABASE_USERNAME=lee