Openship (oblien/openship)μ μ€νμμ€ κΈ°λ°μ μ체 νΈμ€ν (Self-hosted) λ°°ν¬ νλ«νΌμ λλ€. μ½κ² λ§ν΄ κ°μΈμ΄λ νμ΄ μ§μ μλ²μ μ€μΉν΄μ μ¬μ©ν μ μλ βλλ§μ Vercelβ λλ 'λλ§μ Herokuβλ₯Ό λ§λ€μ΄μ£Όλ λꡬλΌκ³ λ³Ό μ μμ΅λλ€.
μ μ₯μ(Repository)μ README λ¬Έμλ₯Ό λ°νμΌλ‘ λΆμν ν΅μ¬ λ΄μ©μ λ€μκ³Ό κ°μ΅λλ€.
1. μ£Όμ νΉμ§ λ° λͺ©μ
- μ¬μΈμ(All-in-One) λ°°ν¬ μλν: GitHub μ μ₯μλ λ‘컬 ν΄λλ₯Ό μ°κ²°νλ©΄ μ½λλ₯Ό κ°μ§νκ³ , λΉλνκ³ , λ°°ν¬νλ©°, λλ©μΈ λΌμ°ν κ³Ό SSL(TLS) μΈμ¦μ λ°κΈκΉμ§ λͺ¨λ κ³Όμ μ μμμ μ²λ¦¬ν©λλ€.
- λ€μν μΈν°νμ΄μ€ μ§μ: 보ν΅μ λ°°ν¬ λꡬλ€μ΄ CLIλ μΉ λμ보λλ§ μ 곡νλ κ²κ³Ό λ¬λ¦¬, Openshipμ λ°μ€ν¬ν± μ±(macOS, Windows, Linux), μΉ λμ보λ, CLIμ 3κ°μ§ λ°©μμ λͺ¨λ μ§μν©λλ€.
- λ€μν νκ²½ μ§μ: Node, Python, Go, Rust, PHP, Ruby, Java, .NET κ°μ μΈμ΄λ λ¬Όλ‘ Docker λ° λͺ¨λ Έλ ν¬(Monorepo) νκ²½λ μλ²½ν μ§μν©λλ€.
- μ¬μΈμ μΈνλΌ κ΄λ¦¬: λ¨μ μ± λ°°ν¬λΏλ§ μλλΌ Postgres, MySQL, MongoDB, Redis λ±μ λ°μ΄ν°λ² μ΄μ€μ λ΄μ₯ λ©μΌ μλ²(SMTP), μ€μΌμ€λ§ λ°±μ κΈ°λ₯κΉμ§ νλ«νΌ λ΄μμ κ΄λ¦¬ν μ μμ΅λλ€.
2. μλ λ°©μ (νμ΄νλΌμΈ)
λ°λ‘ 볡μ‘ν μ€μ νμΌ(openship.jsonμΌλ‘ 컀μ€ν
λ κ°λ₯)μ λ§λ€μ§ μμλ λ€μ κ³Όμ μ κ±°μΉ©λλ€.
- κ°μ§(Detect):
package.jsonμ΄λdocker-compose.yml, λ½(lock) νμΌ λ±μ μ½μ΄ μ΄λ€ μ€νμΈμ§, ν¨ν€μ§ λ§€λμ λ 무μμΈμ§, λΉλ/μμ λͺ λ Ήμ΄μ ν¬νΈλ₯Ό μλ μ μΆν©λλ€. - λΉλ(Build): νκ² μλ²λ μ€μΌμ€νΈλ μ΄ν° λ‘컬μμ Docker μ΄λ―Έμ§ λλ λ² μ΄(bare) 릴리μ€λ‘ λΉλνκ³ μ΄ μνλ₯Ό μ€λ μ·μΌλ‘ κ³ μ νμ¬ λ‘€λ°±μ μ©μ΄νκ² ν©λλ€.
- μ€ν(Run): μΈλΆλ‘ μ§μ λ ΈμΆλμ§ μλ 루νλ°± ν¬νΈλ‘ 컨ν μ΄λλ νΈμ€νΈ νλ‘μΈμ€λ₯Ό μ€νν©λλ€.
- λΌμ°ν λ° λ³΄μ(Route + Secure): OpenResty(Nginx) κΈ°λ°μ μ£μ§ μλ²κ° λλ©μΈμ 리λ²μ€ νλ‘μλ₯Ό μ€μ νκ³ Letβs Encryptλ₯Ό ν΅ν΄ μΈμ¦μλ₯Ό μλ λ°κΈλ°μ΅λλ€.
3. μ€μΉ λ° μ΄μ λͺ¨λ
μ¬μ©μμ νκ²½μ λ§μΆ° λ€μν μ€ν λ°©μμ μ§μν©λλ€.
- λ°μ€ν¬ν± μ± (Solo): κ°μ₯ λ νΉν νΉμ§ μ€ νλλ‘, λ‘컬 PCμ μ±μ κΉκ³ SSHλ‘ μ격 μλ²μ μ μν΄ λ°°ν¬λ₯Ό λͺ λ Ήν©λλ€. μλ² μ체μ λ¬΄κ±°μ΄ κ΄λ¦¬μ© λ°λͺ¬(Control Plane)μ λμΈ νμκ° μμ΄ κ°μΈ κ°λ°μμκ² μ ν©ν©λλ€.
- μ체 νΈμ€ν
μλ² (Team/CI-CD):
openship upλͺ λ Ήμ΄ νλλ‘ μλ²μ Docker κΈ°λ°μ μ 체 μ€ν(Postgres, Redis, API, λμ보λ, OpenResty μ£μ§)μ λμλλ€. ν λ¨μλ‘ μ¬μ©νκ±°λ GitHub Webhookμ ν΅ν μλ λ°°ν¬(CI/CD)κ° νμν λ μ¬μ©ν©λλ€. - Docker Compose (Raw): CLI λ§λ²μ¬ μμ΄
docker-compose.ymlμ μ΄μ©ν΄ μΈνλΌλ₯Ό μ§μ ꡬμ±νκ³ μ μ΄ν μλ μμ΅λλ€.
4. κΈ°μ μ€ν (μν€ν μ² κ΅¬μ±)
- λΌμ°ν / νλ‘μ: OpenResty (Nginx νκ²½μ Lua μ€ν¬λ¦½νΈλ₯Ό λν΄ λμ λΌμ°ν μ²λ¦¬)
- λ°μ΄ν°λ² μ΄μ€ & μΊμ: PostgreSQL (λ©μΈ DB), Redis (μΊμ± λ° μμ ν)
- μΈνλΌ: Docker κΈ°λ° μ»¨ν μ΄λ μ€μΌμ€νΈλ μ΄μ (νΈμ€νΈμ Docker Socketμ λ§μ΄νΈνμ¬ μ±λ€μ 컨ν μ΄λλ‘ λΉλ λ° μ€ν)
- κ°λ° νκ²½: λ‘컬 κ°λ° λ° λΉλ ν΄λ‘
Bunμ μ¬μ©νκ³ μλ κ²μ΄ λμ λλλ€.
[μΆμ²] Openship - λ΄μ₯ CI/CDλ₯Ό κ°μΆ μ ν νΈμ€ν λ°°ν¬ νλ«νΌ | GeekNews