C9 VNC 사용시에 한글 세팅을 위해 참고했던 링크 및 정보들입니다.

C9 VNC에서 크롬 설치하여 사용할때 유용합니다.


1. 관련 스크립트 설치하기. 

https://github.com/noobkilervip/cloud9-vnc


2. 한글 세팅하기. 

http://ledgku.tistory.com/24


$ sudo apt-get install ibus ibus-hangul

$ ibus-setup

1)한글키보드 추가.

Input Method -> Customize active input methods -> Select an input method -> Korean - Hangul -> add

2) 단축키 변경.

Keyboard Shorcuts -> Shif Space로 변경.

3) Use custom font

NanumGothic 세팅.


3. 크롬 세팅하기.

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 

sudo apt-get install libxss1 libgconf2-4 libappindicator1 libindicator7 

sudo dpkg -i google-chrome-stable_current_amd64.deb

'IT > 각종 환경설정' 카테고리의 다른 글

DokuWiki 설정하기  (0) 2018.03.12
[Docker] Ruby On Rails 이미지 만들기  (0) 2017.12.28
TISTORY 포스팅에서 코딩 스타일 입히기  (0) 2017.12.12

그냥 개인 PC에서 DokuWiki를 사용할 일이 있어서 설정한 부분이 있어 정리합니다.


1. IIS 활성화(Windows 7)

  - 제어판 -> 프로그램 및 기능

  - 좌측 "WIndows 기능 사용/사용 안함" 선택

  - 인터넷 정보 서비스 "World Wide Web 서비스", "웹 관리 도구" 선택


  - 내컴퓨터 우클릭 -> 관리 ->  서비스 및 응용 프로그램

  - Default Web Service 확인

  - 참조 : http://h5bak.tistory.com/140

  

2. DokuWiki 설정

  - PHP 다운 후 압축해제(http://windows.php.net/download/), 5.6버전 non-thread safe 권고(7버전에서 실패했음)


  - php.ini-production 복사 후 php.ini로 변경


  - php.ini 값 변경

fastcgi.impersonate = 1

fastcgi.logging = 0

cgi.fix_pathinfo=1

cgi.force_redirect = 0

  - CGI 설정. 

"Windows 기능 켜기/끄기"에서 CGI 선택되어 있어야함.

"서비스 및 응용프로그램"에서 최상위에서 "처리기 매핑"에서 아래 내용으로 추가

요청 경로: *.php

모듈: FastCgiModule

실행파일 옵션: C:\[Path to PHP installation]\php-cgi.exe

이름: PHP_via_FastCGI 

"요청제한" -> "파일 또는 폴더"


"서비스 및 응용프로그램"에서 최상위에서 "MIME 형식"에서 아래 내용으로 추가

파일이름 확장명 : .php

MIME 형식 : application/php

IIS 재시작  

  - ISAPI 설치(https://www.iis.net/learn/application-frameworks/install-and-configure-php-applications-on-iis/using-fastcgi-to-host-php-applications-on-iis)


  - DokuWiki 다운 후 압축 해제(https://www.dokuwiki.org/dokuwiki)


  - web.config 생성 후 아래 소스 저장


<?xml version="1.0" encoding="UTF-8"?> 

<configuration> 

    <system.webServer> 

        

        <security> 

            <requestFiltering> 

                <filteringRules> 

                </filteringRules> 

                <denyUrlSequences> 

                    <add sequence="/data/" /> 

                    <add sequence="/conf/" /> 

                    <add sequence="/bin/" /> 

                    <add sequence="/inc/" /> 

                </denyUrlSequences> 

            </requestFiltering> 

        </security> 

    </system.webServer> 

</configuration>


  - "서비스 및 응용프로그램"에서 dokuwiki 위치 설정

  - "서비스 및 응용프로그램"에서 dokuwiki 선택 후 "사용 권한 편집"에서 보안 선택

  - "그룹 또는 사용자 이름" 편집에서 "IUSR" 추가 후 모든권한 추가

  - dokuwiki 설치(ex. http://localhost/dokuwiki/install.php)

  - dokuwiki 접속(ex. http://localhost/dokuwiki/index.php)

  - 참조 : https://www.dokuwiki.org/install:iis

  - 참조 : http://aspdotnet.tistory.com/1208


3. 환경설정

  - admin 접속 후 "관리" -> "환경설정"  

  - "사이드바 문서이름"에 sidebar 입력

  - "디렉터리 만들기"/"파일 만들기"에 0755 입력

  - "멋진 URL 사용"에 "도쿠위키 내부" 선택

  - "URL에서 이름공간 구분자로 슬래시 사용"에 체크

  - dokuwiki/inc/init.php에서 시간설정

date_default_timezone_set('Asia/Seoul');

  - 특정 확장자를 가진 파일의 업로드를 허용하려면, DokuWiki가 설치된 디렉토리의 conf/mime.conf = DOKU_CONF/mime.conf 파일에 확장자를 추가해줘야 함.

exe     application/octet-stream

msi     application/octet-stream


  

4. 플러그인 설치

  - 각 플러그인 다운 후 압축해제하여 

  - fontcolor plugin

  - fontsize2 plugin

  - indexmenu plugin

http://localhost/dokuwiki/doku.php/sidebar 에서 아래 내용으로 문서편집

{{indexmenu>.#1|js}}

  

모든 프로그래밍 언어를 공부하기 시작할때 겪는 어려움들이 여러가지 있습니다.


그 중 개인적으로 제일 어려운 것이 프로그래밍 언어를 실제 사용해보기 위한 환경설정이었습니다.


하지만 요즘 핫한 언어들은 다양하고 쉬우면서 초보자들이 따라하기 좋은 튜토리얼 환경을 지원하는 경우들이 많은 것 같습니다.


예를 들어 코틀린이라던지 Kotlin이라던지 등등요. (사실 별로 아는게 없습니다;;)


https://try.kotlinlang.org/




무언가 직관적인 위 URL을 따라가보세요.


가셔서 Kotlin 문법을 사용해보시면 됩니다.


Kotlin Konas online 이라는 것으로 단계별 튜토리얼을 작성하며, 실제 코드가 제대로 작성되는지 체크도 가능하게 지원이 됩니다.


저도 아직 문서나 깨작거리며 보는 중이라 Konas는 진행을 못해보았지만요. 


문서보다 직접 코드를 만지며 배우고자 하시는 분들에게 큰 도움이 될 것 같네요.


일단 저는 문서에 나오는 코드를 깨작거려보고자 위 링크로 들어가 아래와 같이 코드를 넣어봅니다.



fun main(args: Array) {
    val a: Int = 1
    val b = 2
    val c: Int
    c = 3
    println("a = $a, b = $b, c = $c")
}


자 이제 첫 Kotlin 코드도 넣어봤으니, 우측 상단에 Run 버튼을 눌러봅니다.



어라, 무언가 이상하네요. 무언가 알 수 없는 에러가 발생합니다. 


아래 Problems View 를 확인하니 Error 문구가 쓰여있네요. 더블클릭해 해당 위치를 확인합니다.


Test.kt의 TestStart 라는 저도 모르는 아이에서 에러가 발생했네요.


보아하니 원래 Task.kt의 start()라는 함수를 호출하려다 제가 Task.kt의 코드를 함수명채로 바꾸다 보니 에러가 발생한 것이네요.


그러고 보니 좌측 메뉴에 보이는 Kotlin Konas라는 애들은 주제마다 Task.kt와 Test.kt로 구성이 되어 있네요.


아마 주제마다 UnitTest 형식으로 사용자의 결과물을 호출하여 값까지 체크하려고 하는 것 같습니다.


그렇다면 주제와 무관한 코드를 확인하고자 했을때엔 Test.kt도 수정해야되는 불편함이 생길 것 같네요. 이건 아닌것 같습니다.


하여 좌측 메뉴에 Kotlin Konas 위 Examples를 눌러봅니다.


이 아이를 누르니 또 다양한 주제들이 리스트로 나오고 있네요.


그 중에서 Hello, world! 그리고 Simplest version 항목을 선택해 봅니다.


역시 이곳에 확인하고자 하는 코드를 넣어봅니다.


그리고 마찬가지로 우측 상단의 Run 버튼을 눌러봅니다.


아 이제야 아래 Console 창을 통해 제가 원하는 결과를 확인할 수가 있네요.


앞으로 간단한 Kotlin 코드들은 이렇게 확인해 볼 수 있을 것 같네요.


원래 안드로이드에 대한 되새김질을 어느정도한 후에 코틀린을 시작하려 했었는데요.


어떤 계기에 의해 막연하게라도 코틀린을 접해봐야겠다는 생각이 들었습니다.


코틀린 쪽 문서들을 훑어보면서 겉핥기식 스터디를 시작하려 합니다.


당분간 아래 링크를 자주 쓰게 될 것 같네요. ㅋ


https://try.kotlinlang.org



이번에도 강남역과 신논현역 사이에 있는 맛집 하나 소개합니다.


룬이라는 브런치 가게인데요.


역시나 골목 안에 숨어 있습니다.


지도 크게 보기
2018.1.26 | 지도 크게 보기 ©  NAVER Corp.


항시 사람이 붐비는 거리 안쪽으로 더 들어가는 곳에 위치하고 있네요.


2층도 자리가 있어 보이지만, 1층에 자리를 잡는 바람에 제대로 구경은 못했네요.




가게 정면 모습입니다. 


안에서도 외부가 시원하게 보이는 인테리어더군요.




실내 모습인데요.


브런치 가게를 안다녀봐서 그런지 넓직한 공간 활용이 낯설긴 했습니다.


1 층에는 공간에 비해 테이블이 그리 많지가 않았습니다.


덕분에 시종일관 여유있게 음식을 즐기며, 대화를 나누기는 좋았습니다.






메뉴판은 두 종류가 준비되어 있었습니다.


크게 팬케이크, 토스트, 세트메뉴, 브런치, 샐러드, 밥, 스카치, 스프, 버거, 피자, 안주, 커피, 주스, 차류, 맥주 등 종류가 많았습니다.


그리고 가게 입구에 있던 만원 메뉴들에 대한 메뉴판이 따로 있더군요.


점심에 방문한지라 저녁까지 되는지는 모르겠네요.


저희는 남자 4명이 역시 방문한지라 이것저것 많이 시켰습니다. ㅋ


쉬림프 갈릭 피자, 로제 파스타, 채끝 스테이크, 해물 크림리조또, 빵+스프+미니 샐러드 까지요.


먹고 후식으로 수플레 팬케이크까지 시켜 먹었습니다.




해물 크림리조또와 로제 파스타가 나온 모습니다. 


스프와 샐러드 그리고 빵은 먼저 나왔었지요.


날이 추워서 그런지 스프가 더 맛나게 느꼈졌었습니다.



그리고 샐러드도 무난한 맛있었고요.


빵도 부드러우면서 너무 강하지 않은 맛이 좋았습니다.



로제 파스타는 개인적으로 입맛에 잘 맞았습니다.


적당히 짭짤하면서도 과하지 않게 자극적인 맛이랄까요.


소스도 적당히 걸죽한 것이 맛있었습니다.



해물 크림리조또도 맛이 좋았습니다.


역시 적당한 느끼한 맛에 질퍽한 정도가 마음에 들었습니다.


고소하면서 느끼함이 살아있고, 물리지 않을 맛 같았습니다.




쪼금 아쉬웠던 채끝 스테이크입니다.


제가 고기를 많이 못먹어봐서 고기에 대한 환상이 많은데요;;


채끝 스테이크는 좀 일반적인 맛이었습니다.


제가 고기를 잘 몰라 그렇게 느껴진 걸수도 있겠지만, 다시 방문한다면 맛이 좋았던 파스타나 리조또 위주의 주문을 할 것 같네요.




생각없이 먹다가 피자는 완전체 사진을 못찍었네요;;


쉬림프 갈릭 피자도 맛이 괜찮았습니다.


새우도 맛있고 마늘도 얇으면서 바삭바삭하게 잘 구워진 느낌이었습니다.


다만 마늘이 좀 강한 느낌이었죠. 다소 마늘의 강한 맛을 안좋아하신다면 좀 강하게 느껴지실 수 있을거 같네요.



그리고 마지막을 장식한 수플레 팬케이크입니다.


부드러운 빵에 달콤한 생크림과 꿀+버터? 가 같이 나오더군요.


두툼한 빵이 부드러우면서 생크림이나 꿀에 찍어먹으니 달콤함을 더해 디저트로 더할나위가 없겠더군요.


아메리카노 한잔과 함께였다면 금상첨화였겠지만, 시간과 자금의 제약으로 인해 아쉽게 마무리를 하였습니다.


전체적으로 룬은 브런치 가게답게 음식들이 자극적이지 않아서 좋았습니다.


거기에 나오는 음식마다 나름 신경써서 깔끔하게 나와 시각적으로도 좋았습니다.


공간 대비 테이블이 적어 북적거릴 일도 없어 보였고요.


데이트 코스로는 이만한 곳도 없을 것 같았습니다.


굳이 브런치가 아니더라도 지인이나 연인끼리 담소를 나누며 맛있는 것들을 즐기신다면 추천해드리고 싶네요.










신논현역과 강남역 사이 골목길에 위치한 스테이터라는 스테이크집을 소개합니다.


모던한 디자인에 심플함이 살아있는 인터리어가 깔끔해 보이죠.




위치는 아래와 같아요.


골목길에 있다보니 초행이시라면 다소 헷갈릴 것 같네요.


지도 크게 보기
2018.1.16 | 지도 크게 보기 ©  NAVER Corp.



이곳의 메뉴는 외부에서도 볼 수 있게 전시되어 있네요.




저희는 남자 4명이서 점심 때 가서 서로인 스테이크 4인분을 주문하여 먹었습니다.


플래터는 2인당 하나씩 나왔으며, 4가지 중 한가지는 육회비빔밥과 라코타치즈샐러드에서 선택하게 되어 있네요.


저희는 하나씩 다 주문하였습니다.



스테이크를 센터에 두고 플래터가 깔리는 풍족한 느낌이 뜸뿍 듭니다.


저는 플래터의 스테이크 파스타와 모듬채소구이가 맛있었습니다.



모듬채소구이를 스테이크에 같이 올린 모습입니다.


나름 맛도 좋고 푸짐하고 인터리어도 깔끔하여 연인끼리 찾기는 좋아 보였습니다.


다만 다른 스테이크집과 고기 맛의 큰 차별점은 잘 못느꼈고, 그날 따라 내부 환기가 안된 것인지 모르겠지만..


환기가 잘안되어 옷에 다소 냄새가 베이는 느낌은 있었습니다.


하지만 그럼에도 스테이크와 푸짐한 사이드메뉴들을 즐기시고 싶으시다면 추천합니다.



집에 있는 세탁기를 교체를 원한다는 요청사항이 들어와 새 세탁기를 알아보게 되었네요.


요청사항은 아래와 같았습니다.


- LG 통돌이 세탁기

- 기존 12KG 제품도 용량이 부족하였으니, 더 큰 모델

- 기존 위치에 들어갈 수 있는 사이즈


등이 있네요.


그리하여 세탁기를 검색하여 비교하게 되었네요.


먼저 네이버 지식쇼핑을 통해 간단히 검색해보기로 합니다.





세탁기를 검색하면 세탁기에 맞춰 옵션들이 뜨고 제가 필요한 조건들을 위와 같이 선택이 가능하네요.


15Kg 제품을 중심으로 찾아보았습니다.


그 결과 아래와 같이 1차로 정리를 할 수 있었네요. (18년 1월 8일자)



기존에 사용하던 T1204S와 비교하니 15Kg대 제품도 사이즈는 동일하게 들어가네요.


TN으로 시작하는 모델들은 이전세대 모델로 보이며, 세탁통이 바닥과 벽의 구성이 다르게 되어 있는게 특징 같네요. (아래 왼쪽)


T로만 시작하는 모델들은 풀스테인레스 세탁통이라 하네요. (아래 오른쪽)


  


그리고 모델명 뒤에 붙는 문자에 대해서 아래와 같이 정리해주신 분이 있네요.


T→세탁기 종류 
15→Kg 
S→색상 (v :모던 스테인리스 b:블랙스테인리스 s:프리실버(은색) d:미드프리실버(회색) w:화이트) 
S→기능 (l : 바람탈수 n: 바람탈수+대포물살 q: 터보샷+대포물살+39분 r: 터보샷+대포물살 s: 대포물살)


현재로써는 바람탈수가 없는 점이 아쉽지만, T15SS 제품을 선택하게 되지 않을까 싶네요.



이상 짧디 짧은 세탁기 검색을 마쳐보겠습니다.




큰 세탁기가 필요하다는 의견에 결국 22Kg 모델로 보게 될 거 같네요.


22Kg 모델의 크기는 17Kg, 20Kg 모델과 동일하더라고요.


모터만 달라 세기 등의 차이가 있다는 것 같네요.


TS22VP, TS22VQ 이 두 제품 중의 선택일 될 것 같아요.


구매시 한번 리뷰를 올려봐야겠습니다~  2018/01/16

'쇼핑' 카테고리의 다른 글

신일 가스 바베큐 SCG-3000YN  (0) 2018.07.17

루비앤레일즈는 기본적으로 MVC 패턴을 따르며, 이에 맞춰 웹 서비스가 가능합니다.


Cloud9 에서 프로젝트를 생성 후 간단한 페이지를 작성해 보겠습니다.


작업은 1. 프로젝트 생성 -> 2. 라우트 설정 -> 3. 컴포넌트 생성 -> 4. 컨트롤러 작성 -> 5. 뷰 작성 등으로 진행됩니다.


1. C9 프로젝트 생성


1.1 C9 로그인 후 Workspaces 에서 Create a new workspace 를 선택합니다.



1.2 Workspace 정보 입력 후 Ruby on Rails 템플릿을 선택합니다.



1.3 C9 프로젝트 생성 완료 화면입니다.



2. 환경설정


라우트에 주소규칙을 설정할 수 있습니다. config/routes.rb 파일에 아래를 참고하여 주소규칙을 작성해봅니다.

Rails.application.routes.draw do
  # get "/" => "<<컨트롤러>>#<<액션명>>" # "/" 로 접속시 <<컨트롤러>>의 <<액션명>> 실행
  # get "/" => "member#login" # "/" 로 접속시 member 컨트롤러의 login 액션 실행
  get "/member/login" => "member#login" # "/" 로 접속시 member 컨트롤러의 login 액션 실행
end


3. 컴포넌트 생성


Cloud9 bash 창에서 아래 커맨드로 컴포넌트 생성할 수 있습니다.

rails generate controller <<컴포넌트명>>  #<<컴포넌트명>> 컴포넌트 생성
rails g controller <<컴포넌트명>>  # 위와 동일
rails g controller Member   # Memeber 컴포넌트 생성


실제 컴포넌트 생성 결과입니다.

$ rails g controller Member   # Memeber 컴포넌트 생성
Running via Spring preloader in process 2371
      create  app/controllers/member_controller.rb     # 컨트롤러
      invoke  erb
      create    app/views/member                            # 뷰 경로
      invoke  test_unit
      create    test/controllers/member_controller_test.rb  # 컨트롤러 테스트
      invoke  helper
      create    app/helpers/member_helper.rb           # 헬퍼
      invoke    test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/member.coffee  #자바스크립트
      invoke    scss
      create      app/assets/stylesheets/member.scss   # 스타일시트


4. 컨트롤러 작성


config/routes.rb 에 작성하였던 컨트롤러에 액션을 추가해 보겠습니다.


app/controllers/member_controller.rb 에 아래과 같이 작성해 봅니다.

class MemberController < ApplicationController
  def login
  end
end


5. 뷰 작성


이제 컨트롤러의 액션에 해당하는 뷰를 작성해 보겠습니다.


app/views/member/login.html.erb 파일을 생성 후 아래와 같이 작성해 봅니다. (파일명을 액션명과 맞춰줘야 합니다.)

<h1>Log In@@@</h1>



6. 결과 보기 및 다양한 출력 방법


지금까지 프로젝트 생성 후 라우트 설정을 하였고, 컴포넌트를 생성하여 컨트롤러와 뷰를 작성하였습니다.


이제 그 결과를 확인해 볼 차례입니다.


아래 C9 Workspace에서 Run Project 를 통해 서버를 구동시켜봅니다.



그리고 서버 구동 후 아래 링크들을 열어 결과를 확인해 볼 수 있습니다.



6.1 그 결과는 아래와 같습니다.



6.2 이번에는 컨트롤러에서 직접 내용을 출력해보겠습니다.


app/controllers/member_controller.rb 에 아래과 같이 작성해 봅니다.


class MemberController < ApplicationController
  def login
    render text: "Log In!!!"  # 뷰에서 "Log In!!!" 문구 출력
  end
end

그 결과를 확인해봅니다.



6.3 이번에는 뷰 파일명을 달리하여 컨트롤러 액션에서 직접 지정하여 출력해보겠습니다.


app/views/member/test_login.html.erb 파일을 생성 후 아래와 같이 작성해 봅니다.

<h1>Log In Test@@@</h1>


그리고 app/controllers/member_controller.rb 에 아래과 같이 작성해 봅니다.

class MemberController < ApplicationController
  def login
    render "test_login" # test_login 뷰 지정
  end
end


그 결과를 확인해봅니다.



이렇게 Cloud9 과 Ruby on Rails를 통해 간단하게 페이지를 작성해 보았습니다.


MVC 패턴 중 View 와 Controll 만을 사용하여 만들어 보았습니다. 


생각보다 어렵지 않게 페이지가 만들어 지는 것을 확인할 수가 있네요.


이상 간단 시식을 마칩니다.










'IT > ETC' 카테고리의 다른 글

[SonarQube] SonarQube & Jenkins 이야기  (0) 2020.02.14
[SonarQube] SonarQube 도입기?  (0) 2020.02.07
[Docker] Docker란?  (0) 2018.03.23
Expert Beginner란...  (0) 2018.03.12

내년부터 Google Play Console에 앱을 등록/업데이트시 최신 API를 지정하는 것을 필수 사항이 된다고 합니다.


  • 2018년 8월 : 새로운 앱은 Target API 26 (Android 8.0) 이상.
  • 2018년 11월 : 기존 앱 업데이트시 Target API 26 이상.
  • 2019년 이후 : 매년 targetSdkVersion 올라감. 


이와 더불어 2019년 8월부터 새 앱 등록시 64비트 코드로 등록이 가능하다고 합니다.

(64비트 관련 JNI 미사용시 호환에 크게 문제가 없다고 함. 링크 )


관련 링크들 참조 : 







  

개인적으로 Cloud9 에서 작성한 Ruby On Rails 어플리케이션을 Docker로 돌려보기 위해 작업했던 내용들을 작성해봅니다.


사전에 Cloud9 에서 작업한 Ruby On Rails 프로젝트를 Bitbucket 으로 연결하여 git으로 형상관리를 하였습니다.


본 작업에서는 Docker Image 에서 Bitbucket에 올라간 Ruby On Rails 프로젝트를 clone 하여 사용하는 구조로 만들기로 합니다.

아래 Docker Image를 사용하려 하였으나, Deprecated 라는 내용 때문에 직접 Docker Image를 만들어 쓰기로 하였습니다.


https://github.com/docker-library/rails


1. 먼저 Docker Image를 만들기 위해 Dockerfile을 생성합니다.


FROM ubuntu
 
ENV PATH "~/.rbenv/bin:$PATH"
ENV PATH "~/.rbenv/versions/2.3.0/bin:$PATH"
ENV RAILS_ENV development
EXPOSE 3000
 
# Run upgrades
RUN apt-get -y update
 
# Install basic packages
RUN apt-get -y install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev
 
RUN apt-get install nano
 
#RUN cd
WORKDIR ~
RUN git clone git://github.com/sstephenson/rbenv.git ~/.rbenv 
 
RUN git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build 
 
RUN ls ~/.rbenv
RUN ~/.rbenv/bin/rbenv init -
 
# 루비 설치
RUN ~/.rbenv/bin/rbenv install -v 2.3.0 
RUN ~/.rbenv/bin/rbenv global 2.3.0
 
RUN ~/.rbenv/versions/2.3.0/bin/ruby -v
 
# gem 설정, bundler 설치
RUN echo "gem: --no-document" > ~/.gemrc
RUN ~/.rbenv/versions/2.3.0/bin/gem install bundler
 
# 레일즈 설치
RUN ~/.rbenv/versions/2.3.0/bin/gem install rails -v 4.2.5
RUN ~/.rbenv/bin/rbenv rehash
RUN ~/.rbenv/versions/2.3.0/bin/rails -v
 
# node js 설치
RUN apt-get -y install nodejs
 
# 프로젝트 소스 clone
WORKDIR /app
RUN git clone https://id:pwd@bitbucket.org/<<아이디>>/<<프로젝트>>
 
# bunde install
WORKDIR /app/testror
RUN ~/.rbenv/versions/2.3.0/bin/bundle install
RUN ~/.rbenv/versions/2.3.0/bin/bundle exec rake db:migrate
 
# rails 서버 start
CMD ~/.rbenv/versions/2.3.0/bin/rails s -b 0.0.0.0 -p 3000

위 내용을 간단히 설명하자면 아래와 같습니다.

  1. ubuntu 이미지 기반
  2. 환경변수 설정 후 3000포트 사용 정의
  3. 기본 패키지 업데이트 및 설치
  4. ruby 설치
  5. gem 설정, bundler 설치
  6. rails 설치
  7. node js 설치
  8. Rails 어플리케이션 clone
  9. bundle install 및 db migrate
  10. CMD 명령으로 컨테이너 실행시마다 rails 서버 시작

2. Dockerfile 작성 후 Docker Image 빌드를 합니다.


Dockerfile이 있는 경로에서 아래 커맨드를 실행합니다.

docker build -t ror .


위 커맨드를 간단히 설명하자면 아래와 같습니다.

  1. Docker Image를 build 하겠다.
  2. -t로 이름과 태그 지정(name/tag식으로 tag 안 쓸 경우는 name만). 이름은 ror로 지정
  3. . 으로 빌드 대상 경로 지정. Dockerfile 있는 경로로
  4. 완료 후 docker images 로 이미지 생성 완료 확인
  5. 실패시 docker rmi ≪image name≫ 으로 실패한 이미지 삭제

실행시 아래와 같은 결과를 확인할 수 있습니다.



$ docker build -t ror .
Sending build context to Docker daemon  16.38kB
Step 1/28 : FROM ubuntu
 ---> 20c44cd7596f
...
Successfully built 840df28a7759
Successfully tagged ror:latest

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ror                 latest              840df28a7759        2 hours ago         842MB


3. Docker Container를 생성 및 실행합니다.


Docker Image 생성 완료 후 아래 커맨드로 컨테이너를 생성 및 실행합니다.


docker run -d --name ror -p 60005:3000 ror


위 커맨드를 간단히 설명하자면 아래와 같습니다.

  1. Docker Image를 build 하겠다.
  2. Docker Container를 run 하겠다.
  3. -d 옵션으로 컨테이너를 백그라운드에서 실행
  4. --name 으로 컨테이너 이름 설정. ror로 설정함
  5. -p 로 호스트에 연결된 컨테이너의 특정 포트를 외부에 노출(<호스트 포트>:<컨테이너 포트>)
  6. ror 이미지로 생성
  7. 실패시 docker rm ror 로 컨테이너 삭제
실행시 아래와 같은 결과를 확인할 수 있습니다.


$ docker run -d --name ror -p 60005:3000 ror
0431b06b76a1978898d3f0cdf44ebda94.......
$ docker logs ror
[2017-12-28 10:40:46] INFO  WEBrick 1.3.1
[2017-12-28 10:40:46] INFO  ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2017-12-28 10:40:46] INFO  WEBrick::HTTPServer#start: pid=6 port=3000

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS                     NAMES
0431b06b76a1        ror                 "/bin/sh -c '~/.rb..."   2 hours ago         Up 2 hours               0.0.0.0:60005->3000/tcp   ror


위와 같이 하신 후 브라우저에서 locahost:60005 로 연결하시면 Ruby On Rails 프로젝트 동작을 확인할 수 있습니다.


참고로 위 작업을 마친 후 아래 링크도 찾게 되었네요;; 그런데 안해봐서 아래 링크대로는 아직 확인을 못해봤습니다.


https://docs.docker.com/compose/rails/


위 링크를 따라하시다 안되시면 제 포스팅 내용을 참고하시면 될 거 같습니다.

'IT > 각종 환경설정' 카테고리의 다른 글

C9 VNC 사용시 한글 세팅  (0) 2018.03.12
DokuWiki 설정하기  (0) 2018.03.12
TISTORY 포스팅에서 코딩 스타일 입히기  (0) 2017.12.12

+ Recent posts