320x100
320x100

1. 이게뭐약 컨테이너 구축

2. 이게뭐약 CI/CD 구축

3. 안드로이드 애플리케이션 플레이스토어 인증 방법 검색

 

 

 

이게뭐약 컨테이너 구축

- 메인서버

: openjdk 이미지

: env 파일 생성 후 envDB_address, DB_port, username, password

(http://daplus.net/java-spring-boot%EC%9D%98-application-properties%EC%97%90%EC%84%9C-env-%EB%B3%80%EC%88%98-%EC%82%AC%EC%9A%A9/)

: MySQL 이미지 다운로드 후 user 추가

 

- DL 서버

: 파이썬 이미지

=> 도커 파일 작성

 

 

 

서버내 jdk11 설치

yum install java-11-openjdk-devel.x86_64

 

삭제한 java 명령어 복구 및 bash: /usr/bin/java: No such file or directory 해결

cd /usr/lib/jvm/

ls

ln -s /usr/lib/jvm/jre-11-openjdk-11.0.12.0.7-0.el7_9.x86_64/bin/java /etc/alternatives/java

ln -s /usr/lib/jvm/jre-11-openjdk-11.0.12.0.7-0.el7_9.x86_64/bin/java /usr/bin/java

java -version

 

 

Caused by: java.net.UnknownHostException 해결법

vi /etc/hosts

127.0.0.1 cl-EFSS-linux16

::1 위에 추가

=> 해결불가. DB와의 connection 문제로 보임

 

 

docker run -e MYSQL_ROOT_PASSWORD=wip-dbpp -d -p 3306:3306 mysql:8.0.2

 

순서

1. DB 서버 실행 -> 메인서버 실행 -> DL서버 실행

 

 

 

 

레포지터리 병합

0. 레포지터리 생성 및 git clone

1. 신규 레포지터리로 이동

2. git remote add <합칠 레포지터리 이름> <합칠 레포지터리 주소>

3. git fetch <합칠 레포지터리 이름>

4. git merge --allow-unrelated-histories <합칠 레포지터리 이름/브랜치>

5. git add .

6. git commit -a

7. git push -u origin 브랜치

 

 

커밋 되돌리기

git log

git revert 커밋주소

 

 
 
 

1. 각 서버 컨테이너화

DL 서버

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

: RUN apt-get update && apt-get -y install libgl1-mesa-glx \

 

필요 파일 다운로드

&& wget -P=/usr/src/wip/weights --no-check-certificate 'https://docs.google.com/uc?export=download&id=1Jk4eGD7crsqCCg9C9VjCLkMN3ze8kutZ' -O craft_mlt_25k.pth \

&& wget -P=/usr/src/wip/weights --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1pBHtpsecIVQptD3HoWt61gwBIgO2uHCR' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1pBHtpsecIVQptD3HoWt61gwBIgO2uHCR" -O fine_tuned.pt && rm -rf /tmp/cookies.txt \

&& wget -P=/usr/src/wip/weights --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1yLixadZ_3Ls4x_TR0-8MG6-iQSEn5ZSG' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1yLixadZ_3Ls4x_TR0-8MG6-iQSEn5ZSG" -O pill_recog_model.pth && rm -rf /tmp/cookies.txt \

 

구글 드라이브 참조 (https://m.blog.naver.com/sssang97/221786881113)

 

main 서버

: build gradle 추가

=> build 할때 DB서버가 켜져있어야함

=> 일단 compose파일에서 build를 수행시키고 (build 이미지와 deploy이미지 분리) => volume 공유

=> network 생성

 

docker run -e MYSQL_ROOT_PASSWORD=wip-1997 -d -p 3306:3306 mysql:8.0.2

 

SSL peer shut down incorrectly

RUN bash ./gradlew clean build -Dhttps.protocols=TLSv1.2

 

SSL 관련

=> https://susoterran.github.io/mysql/mysql_privatecertificate/

 

mysql -u root -p find_pill

wip1997

show variables like '%ssl%';

 

grant all privileges on *.* to 'wip'@'%' identified by 'wip1999' require SSL;

flush privileges;

update user set ssl_type = 'ANY' where user = 'wip';

 

 

 
 
 

1. Database 설정

mysql -u root -p find_pill

==================

유저 생성

use mysql;

create user wip@main identified by 'wip1999';

grant all privileges on *.* to wip@main identified by 'wip1999';

flush privileges;

select host, user from user;

 

유저 삭제

use mysql;

delete from mysql.user where User ='wip';

delete from mysql.db where User ='wip';

flush privileges;

 

=> 2mukee/wip-db-deploy:1.0으로 commit 및 배포

 

 

2. 메인서버

: 앱에서 18080포트로 접속 (포트 열기 완료)

ㆍ크롬 드라이버 설치

wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -

bash -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'

apt-get update -y

apt-get install -y google-chrome-stable=95.*

google-chrome --version

# 95버전

wget -N https://chromedriver.storage.googleapis.com/95.0.4638.17/chromedriver_linux64.zip

unzip chromedriver_linux64.zip

 

 

3. 애플리케이션

=> 에뮬레이터 구동문제

Could not dispatch a message to the daemon.

: gradle 다운로드 후 환경변수 설정하고 gradle stop

 

 

진행상황

1. 메인서버 및 딥러닝 서버 테스트 완료

2. 메인서버 및 딥러닝 서버 컨테이너 안정화 완료

3. 데이터베이스 서버 컨테이너 안정화 완료

 

 

 

애플리케이션 플레이스토어 앱 출시

1. 구글 개발자 계정 생성 (구글 콘솔에서 25달러 결제 필요)

: https://play.google.com/console/u/0/signup

: 참조 (https://wp.swing2app.co.kr/knowledgebase/google-developer/)

 

2. 구글 플레이 개발자 콘솔 접속

: https://play.google.com/console/u/0/developers

: 앱만들기 > 항목 기입 > 대시보드에서 앱설정 완료

참조 (https://wp.swing2app.co.kr/knowledgebase/playstore-apprelease/)

 

 
 
 
 

1. 이게뭐약 리뉴얼 앱 플레이스토어 배포 완료

 

2. 이게뭐약 리뉴얼 앱 자동 배포

Firebase App Distribution + fastlane

 

 

fastlane

: Android ios 앱의 개발 및 출시 프로세스를 자동화하는 오픈소스 도구

 

ㆍ기능

: 앱 스토어에 대한 현지화 된 스크린샷 자동 생성

: 테스터에게 베타 빌드 배포

: 몇 초만에 릴리스 게시

: 코드 서명 처리

 

ㆍ필요사항

: 기본적으로 macOS에서 지원 / Linux Windows는 부분적으로 지원

: 2.4~2.7 버전의 Ruby 설치 필요

 

ㆍ구성요소

: 번들러 (Fastlane에 대한 종속성 정의)

 

ㆍ환경구성

: sudo gem install fastlane

: brew install fastlane

: 프로젝트 폴더에 /fastlane/FastFile 생성

: fast init

=> 이후 firebase와 연동하여 Firebase App Distribution을 통해 자동으로 배포

=> firebase와 연동 참조 (https://firebase.google.com/docs/app-distribution/android/distribute-fastlane?hl=ko)

 

Refference

https://ichi.pro/ko/silijeu-fastlaneeul-sayonghayeo-peulodeogsyeon-yong-react-neitibeu-aeb-eul-firebase-aeb-baepo-e-gesihabnida-218318454341011

 

 

 

디스크 용량 체크

df -hT

: sda2centos-root의 용량이 꽉차 데이터를 centos-home으로 옮길 예정

 

 

 

가장 많은 용량을 차지하는 디렉터리 확인

1. root 디렉터리에서 du -h --max-depth=1

2. 위 방법으로 가장 큰 용량을 차지하는 디렉터리로 이동

3. docker가 가장 많은 용량을 차지

 

 

Docker 데이터 디렉터리 변경

=> 이 방법의 경우 기존 데이터가 있을 경우 옮겨도 적용이 안됨

 

1. 도커 데이터 경로 확인

docker info | grep Root

 

2. 도커 데몬 상태 확인

service docker status

: Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) 부분 확인

: /usr/lib/systemd/system/docker.service 복사

 

3. centos/root의 용량을 많이 차지하므로 /home 디렉터리로 옮길 준비

: cd /home

: mkdir docker-data

 

3. 도커 데이터 디렉터리 변경

vi /usr/lib/systemd/system/docker.service

: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 부분 찾기

: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/home/docker-data 로 변경

 

4. 도커 데이터 파일 옮기기

mv /var/lib/docker /home/docker-data

 

5. 도커 데몬 재시작

service docker stop

service docker start

 

5. 적용여부 확인

docker info | grep Root

: 적용이 안됐을 경우 재부팅

 

 

 

 

 

기존 데이터가 있는 경우 도커의 데이터 디렉터리를 바꾸는 방법

1. 데이터 복제

: mv /var/lib/docker /home/docker-data

 

2. daemon.json 생성

vi /etc/docker/daemon.json

{

"graph": "도커 데이터 경로로 지정할 위치" # 필자는 "graph": "/home/docker-data/docker" 로 사용

}

 

3. 도커 재시작 및 적용 확인

service docker stop

systemctl daemon-reload

service docker start

 

 

Refference

https://jybaek.tistory.com/797

https://zunoxi.tistory.com/40

 

 

 
300x250
728x90

'Development > Project' 카테고리의 다른 글

211207 ~ 211210 fc- 개발일지  (0) 2022.01.30
211116 ~ 211206 fc- 개발일지  (0) 2022.01.30
모해묵지 프로젝트 Readme  (0) 2021.11.28
Hermes - flutter / dart 정리  (0) 2021.10.20
Hermes 개발일지  (0) 2021.10.20