vscode 컨테이너를 사용하여 Rails 앱 시작
최근 VSCode는 dev containers과의 도커 통합을 개선하고 있습니다. 이 기능은 컨테이너 작업 프로세스를 더 쉽게 만들고 컨테이너 내부의 편집기와 작업 공간 간의 원활한 통합을 제공합니다(확장과의 호환성 향상, 격리된 구성 및 더 쉬운 디버깅). .
이 게시물에서는 개발 컨테이너를 사용하여 PostgreSQL 데이터베이스로 레일스 애플리케이션을 시작할 것입니다.
전제 조건
Docker 및 docker 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를 시작하는 방법에 대한 작은 예였습니다. 이것은 팀 구성원 간에 개발 환경을 빠르게 시작하고 라이브러리 및 종속성을 설치하는 작업의 양을 줄이고 다른 버전 등.
이것은 나의 첫 번째 게시물이고 나는 영어 원어민이 아니므로 모든 피드백에 열려 있고 적절하게 수정합니다.
Reference
이 문제에 관하여(vscode 컨테이너를 사용하여 Rails 앱 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/imiked/starting-a-rails-app-using-vscode-containers-1gj9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)