토이프로젝트나 간단한 서비스를 위한 서버 구동을 위해 AWS나 Google Could를 사용하자니 돈벌이도 없는데 좀 그렇더군요. ㅠ.,ㅜ;
아래 블로그를 보다가 Freehosting 서비스로 무료 플랜도 괜찮아 보여 진행하려 하다가,...
결국 여기저기를 보던와중 Synology NAS 로 설정하는 걸 보았고.. 나도 있는데!?
DS918+ Docker가 지원되는 모델!!!! 와우.. 그래서 밤샘하여 설정 테스트를 완료!! ㅎㅎ 기쁘네요.
시놀로지 Docker로 Nodejs 웹서버 설치하고 띄우기는 아래 블로그를 보고 차근히 따라 하면 됩니다.
위의 글대로 하면 nodejs로 서버 구동은 잘 되는데..
cmd나 bash 명령 처리 과정의 복잡성, 그리고 nodemon을 사용할 수 없다는 문제점이 있어서 밤샘 ㅠ.,ㅜ;
혹시 nodemon 되는 것을 누가 만들었을까 싶어 레지스트리를 봤더니 역시나 nodemon이 있어서 깔아보기도 했지만 오래되고 불안정하고 업데이트 안되고 있어서 삭제..
여튼 최종적으로 실제 서비스를 위한 Nodejs Docker와 개발을 위한 Nodejs Test Docker를 만들어서 Test 서버에서는 nodemon으로 구동할 수 있도록 환경구축 완료!!!!!
Synology.Docker 가장 골치아팠던 컨테이너 실행 명령
아니.. 왜?? Why?? 컨테이너로 만들어진 이후에는 실행 명령을 수정할 수 없습니다!!!! 그래서 초반에 경로나 파일 내용이 잘못되거나 하면 Docker의 Nodejs가 실행자체가 안되기 때문에 어떠한 조작도 할수가 없습니다.
수십번을 컨테이너 지우고 만들기를 반복.. ㅋㅎ..
일단 좀더 쉽게 설정하도록 준비하여 처리하겠습니다.
이미 생성되어 있는 Nodejs 컨테이너 하나를 선택하고 "설정 - 내보내기"
"컨테이너 콘텐츠 및 설정 내보내기"는 Nodejs Docker를 전체 내보내기하여 txz 파일로 만들어줍니다. 나중에 실서버 백업을 한다거나 할 때 사용할 수 있겠네요.
한번 전체 내보내기 해보았는데 시간도 오래걸리고 용량도 꽤 큽니다. 200MB가 넘네요. 실제로 사용할 일은 적을 것 같고, 실서버에서라도 NAS의 폴더를 /home/node/app 으로 마운팅하여 사용하기 때문에 /home/node/app 폴더 내에서만 자료를 유지한다면 NAS에 알아서 보관이 되니 전체를 백업할 일이 없는 것이지요.
위의 설정으로 [내보내기]를 완료하면, /docker 폴더 안에 nodejsApp.syno.json과 같은 파일이 만들어져 있을겁니다.
폴더 구성 (node8000, nodemon9000)
일단 저는 실서버 구동을 위해 node8000 Nodejs 서버와 테스트 개발을 위한 nodemon9000 Nodejs 서버를 돌릴 예정입니다. 따라서 nodejsApp.syno.json 파일을 node8000.syno.json 으로 이름 변경하고, nodemon9000.syno.json 으로 복사하여 한 개 더 만들어줍니다.
Visual Studio Code로 /docker를 열어서 node8000.syno.json을 열고 다음과 같이 수정합니다.
node8000.syno.json - 수정이 필요한 부분은 "cmd"와 "port_bindings", "volume_bindings'입니다.
나만의 꿀팁 페이지 - <View> <ScrollView> <Image> <Text> <StatusBar> 태그 등을 활용하여 페이지 구성
{Navigation}을 이용하여 페이지 이동하기.
{useState}, {useEffect} 등 사용하기
소개 페이지 - <ScrollView> <Image> <Text> 태그 등을 활용하여 페이지 구성
카테고리 버튼 - <ScrollView> <Image> <Text> 태그 등을 활용하여 페이지 구성
{useState}를 활용하여 카테고리 함수 만들어 버튼 동작 연동하기
- "반려견" 클릭시 반려견 관련 데이터만 보여주기
"꿀팁 찜" 버튼은 {Navigation}으로 LikePage.js 로 이동하기.
꿀팁 찜 - <ScrollView> 태그 등을 활용하여 페이지 구성
LikeCard.js component를 구성하여 map() 함수를 이용하여
<LikeCard></LikeCard> 호출하여 사용하기
상세 페이지 - <ScrollView> <View> <Image> <Text> 태그 등을 활용하여 페이지 구성
{Navigation}에서 전달받은 {route}의 params 값을 이용하여 상세 페이지 보이기.
- 이전 페이지로부터 제목과 이미지, 상세 설명 데이터를 그대로 전달받아 화면에 표시
Share를 사용하여 외부 링크 공유하기
Linking을 사용하여 외부 링크로 연결하기
몇년전 안드로이드 개발서적 보던게 엊그제 같은데..
너무나 달라진 환경.. 게다가 현재 사용되는 React, Expo 등도 너무나 빠르게 변화되고 있다는 것이 문제라면 문제다..
언제 또 개발 환경 및 플랫폼이 뒤바뀔지 알수가 없기 때문이다...
결국은 프론트앤드 개발자는 저러한 엄청난 툴들을 잘 활용해서 개발을 하고.. 몇년 지나 관리가 되지 않으면 앱의 생명은 끝이 되는거다.. 해당 프레임워크의 업데이트가 종료되거나 사라지거나, 또는 지속적인 업데이트를 프론트앤드 개발자를 두고 지속 대응을 하지 않으면 몇개월뒤 이미 오래전 만든 앱으로 전락해버릴 것이기 때문이다.