vscode 컨테이너를 사용하여 Rails 앱 시작

12866 단어 rubydockerrailsvscode
한동안 개발 워크플로에서 Docker를 많이 사용했습니다. 현재 저는 항상 새 프로젝트를 시작하기 위해 docker-compose 파일로 dockerfile을 만들기 시작하며 이것은 항상 새 프로젝트를 시작하기 전에 또 다른 작업 계층을 추가합니다.

최근 VSCode는 dev containers과의 도커 통합을 개선하고 있습니다. 이 기능은 컨테이너 작업 프로세스를 더 쉽게 만들고 컨테이너 내부의 편집기와 작업 공간 간의 원활한 통합을 제공합니다(확장과의 호환성 향상, 격리된 구성 및 더 쉬운 디버깅). .

이 게시물에서는 개발 컨테이너를 사용하여 PostgreSQL 데이터베이스로 레일스 애플리케이션을 시작할 것입니다.

전제 조건



  • Dockerdocker compose 설치됨

  • WSL2 Windows를 사용하는 경우 설치됨

  • Remote containers 확장 프로그램 설치됨

  • VSCode 확장 프로그램이 설치된 remote containers

  • 시작하자



    터미널을 열고 터미널mkdir rails-example을 사용하여 새 폴더를 추가하고 이제cd 디렉토리에 VSCode로 폴더를 엽니다.

    cd rails-example
    code .
    


    편집기에서 ctrl+shift+p 를 누릅니다. 그러면 명령 패널이 열립니다. "개발 컨테이너 구성 파일 추가.."옵션을 찾습니다.



    다른 패널이 열리면 "모든 정의 표시"옵션을 클릭하고 "Ruby on Rails"를 선택합니다. 다른 언어에 대한 더 많은 구성이 있고 더 많은 설정이 진행 중입니다(예를 들어 확장 기능의 Github 페이지에서 풀 요청에 대한 Elixir + Phoenix 구성을 보았습니다).



    이렇게 하면 .devcontainer 폴더 안에 두 개의 파일이 추가됩니다. devcontainer.json 내부에는 루비 및 노드 버전과 같이 변경할 수 있는 특정 인수가 있습니다. ctrl+shift+p를 다시 누르고 "컨테이너에서 다시 열기"옵션을 선택하여 이 구성으로 컨테이너 내부에서 이 폴더를 열 수 있습니다. 몇 분 정도 기다리면 편집기가 하단에 Dev 컨테이너 태그와 함께 다시 열립니다.



    편집기 터미널을 열고 ruby -v && rails -v 를 입력합니다. 터미널에 두 버전이 모두 표시되면 이제 레일 애플리케이션 빌드를 시작하는 데 필요한 모든 것을 포함하는 Ruby on Rails 컨테이너가 있는 것입니다. 이 애플리케이션에는 거의 PostgreSQL이 필요하므로 자체 도커를 추가해야 합니다. - 개발 컨테이너 구성 JSON 파일을 작성하고 확장합니다. 이를 통해 향후 Redis 또는 Elasticsearch와 같은 더 많은 서비스를 추가할 수 있습니다.

    기본 구성 확장


    .devcontainer 폴더 안에 다음 콘텐츠가 포함된 docker-compose.yml라는 새 파일을 추가합니다.

    version: '3'
    
    volumes: 
      postgres_data:
    
    services:
      app:
        # See https://aka.ms/vscode-remote/containers/non-root for details.
        user: vscode
    
        build: 
          context: ..
          dockerfile: .devcontainer/Dockerfile
          args:
            # Update 'VARIANT' to pick a Ruby version: 2, 2.7, 2.6, 2.5
            VARIANT: 2.7
            USER_UID: 1000
            USER_GID: 1000
            NODE_VERSION: lts/*
    
        volumes:
          - ..:/workspace:cached
          - $HOME/.ssh/:/home/vscode/.ssh/ # Mount the ssh folder to authenticate with github
    
        # Overrides default command so things don't shut down after the process ends.
        command: sleep infinity
    
        links: 
          - db
    
      db:
        image: postgres
        restart: unless-stopped
        volumes: 
          - postgres_data:/var/lib/postgresql/data
        ports: 
          - 5432:5432
        environment:
          POSTGRES_PASSWORD: LocalPassword
    


    이 docker-compose는 PostgreSQL을 서비스로 추가하여 dev 컨테이너를 확장합니다. 또한 컨테이너 내부의 Github에 인증하기 위해 .ssh 폴더에 대한 볼륨 마운트가 있습니다.

    이제 다음 코드로 devcontainer.json 파일을 편집하여 docker-compose 서비스를 연결해야 합니다.

    {
        "name": "Ruby on Rails With PostgreSQL",
        "dockerComposeFile": "docker-compose.yml",
        "service": "app",
        "workspaceFolder": "/workspace",
        // Set *default* container specific settings.json values on container create.
        "settings": { 
            "terminal.integrated.shell.linux": "/bin/bash"
        },
    
        // Add the IDs of extensions you want to be installed when the container is created.
        "extensions": [
            "rebornix.Ruby"
        ],
    
        // Use 'forwardPorts' to make a list of ports inside the container available locally.
        "forwardPorts": [3000],
    
        // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
        "remoteUser": "vscode",
    }
    


    이러한 파일을 추가한 후에는 이미지를 다시 빌드하고 컨테이너에서 폴더를 다시 열어야 합니다. 이제 dev 컨테이너 안에 있을 때 다음 명령을 입력하여 새 rails 앱을 만듭니다.

    rails new . -d postgresql
    


    생성이 완료되면 데이터베이스 서비스config/database.yml의 자격 증명으로 db를 편집합니다.

    default: &default
      adapter: postgresql
      encoding: unicode
      host: db
      user: postgres
      password: LocalPassword
      # For details on connection pooling, see Rails configuration guide
      # https://guides.rubyonrails.org/configuring.html#database-pooling
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
    


    이러한 데이터베이스 자격 증명을 추가한 후 실행rails db:create하여 데이터베이스를 생성합니다.

    이제 rails s 명령을 사용하여 rails 앱을 시작할 준비가 되었습니다. 그런 다음 http://localhost:3000/을 방문하여 실행 중인 rails 앱을 확인하세요.



    결론



    이것은 dev-containers를 시작하는 방법에 대한 작은 예였습니다. 이것은 팀 구성원 간에 개발 환경을 빠르게 시작하고 라이브러리 및 종속성을 설치하는 작업의 양을 줄이고 다른 버전 등.

    이것은 나의 첫 번째 게시물이고 나는 영어 원어민이 아니므로 모든 피드백에 열려 있고 적절하게 수정합니다.

    좋은 웹페이지 즐겨찾기