Cách xây dựng nhiều ứng dụng web với Elixir nhờ ô - phần 2: Thiết lập dự án

Hướng dẫn (wannabe) để tìm hiểu cách tạo ứng dụng web với Elixir 1.9, Phoenix 1.4, Docker (để phát triển), Git (bao gồm cả các mô hình con) để phiên bản từng ứng dụng, PostgresQL, Redis, gọi API và triển khai.

Hướng dẫn này được gửi đến các nhà phát triển có một vài dự án đằng sau họ và sẵn sàng thử Elixir. Phần thứ hai này sẽ cho bạn biết làm thế nào để thiết lập một dự án.

Tóm lược

  • Tại sao thuốc tiên?
  • Thiết lập dự án
  • Tạo người dùng cho trang web quản trị phần 1: Bootstrap, thực thể và kiểm tra
  • Tạo người dùng cho trang web quản trị phần 2: bảo mật và mật khẩu
  • Triển khai ứng dụng ô
  • Tạo API
  • Tạo một dịch vụ tổng hợp
  • Xử lý kênh cho các ứng dụng thời gian thực

Mới! Bây giờ bạn có thể tìm thấy các nguồn hướng dẫn ở đây: https://github.com/aridjar-umhima-guide/medium_um giác! Tôi sẽ nâng cấp chúng cùng lúc tôi nâng cấp hướng dẫn!

Trong chương này, chúng ta sẽ xem cách cài đặt, tạo và cấu hình một ứng dụng ô và ứng dụng con của nó, docker và lưu từng dự án trong kho git.

Đối với hướng dẫn này, bạn nên biết cách tạo kho lưu trữ git vì chúng ta sẽ chỉ khám phá phần mô đun con của git trong phần liên kết. Bạn đã thắng được cần bất kỳ kiến ​​thức nào về docker.

Cài đặt Elixir, Docker và Node

Đối với những người bạn không biết Docker, chúng tôi có thể tạo Dockerfile và sử dụng nó để thực hiện mọi cài đặt và lệnh được liên kết với ngôn ngữ từ môi trường ảo được kiểm soát. Nhưng nó sẽ buộc mọi người sử dụng docker, và một số bạn có thể muốn tránh điều đó.

Vì vậy, trước hết, hãy để cài đặt Elixir bằng cách làm theo hướng dẫn sau: Cài đặt Elixir. Khi đã xong, mở một thiết bị đầu cuối và gõ

$> trộn -v

Bạn nên có một đầu ra tương tự:

Lưu ý: bạn có thể muốn kiểm tra phiên bản Erland / OTP trong docker để chắc chắn có phiên bản phù hợp (nếu không, nó có thể tạo ra sự cố). Để làm như vậy, hãy vào kho lưu trữ docker-elixir, chọn phiên bản mới nhất (thực tế là 1.9) và mở tệp có tên Dockerfile. Dòng đầu tiên sẽ cho bạn biết phiên bản đã sử dụng. Nếu phiên bản của bạn khác, vui lòng cài đặt Erlang.

Sau khi Elixir được cài đặt, hãy để Lạc chăm sóc Phoenix. Vì đây là khung chính của Elixir, chúng tôi sẽ sử dụng nó để tạo các ứng dụng web của mình.

$> trộn kho lưu trữ. cài đặt hex phx_new 1.4.2

Nếu điều này không hoạt động, bạn sẽ có thể cài đặt nó thông qua Github bằng lệnh cũ:

$> trộn kho lưu trữ.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez

Sau đó, hãy để cài đặt Docker.

Lưu ý: không bắt buộc, nhưng tôi có thể không cung cấp các cách khác để định cấu hình và xử lý các thứ khác nhau, chẳng hạn như cơ sở dữ liệu, thông qua hướng dẫn này.

Khi Docker được cài đặt, khởi động lại shell và nhập:

bến tàu -v

Bạn sẽ thấy phiên bản được hiển thị. Nếu không, hãy thêm thư mục Docker vào đường dẫn $ của bạn.

Cuối cùng, nếu bạn không cài đặt Node trên máy tính của mình và bạn muốn có nó, hãy làm theo hướng dẫn sau: cài đặt node.js. Tuy nhiên, điều này không bắt buộc, vì chúng tôi sẽ biên dịch và chạy nút và các tài sản trong bộ chứa Docker.

Tạo ứng dụng ô

Bây giờ chúng tôi đã cài đặt mọi thứ chúng tôi cần, hãy để nói chuyện một chút về các ứng dụng ô:

Một ứng dụng Elixir Umbrella xác định một ứng dụng mẹ chứa và quản lý một bộ các ứng dụng con.

Điều này có nghĩa, thay vì tạo nhiều ứng dụng tách biệt với nhau, mỗi ứng dụng sẽ được liên kết với các ứng dụng khác thông qua ô, cho phép chúng có cả ưu điểm của dịch vụ vi mô và ứng dụng nguyên khối.

Nhưng nói đủ rồi! Để tạo ứng dụng ô, bạn sẽ phải nhập:

$> trộn phx.new [Destination_folder] --um giác

Hãy để có một cái nhìn chi tiết về từng từ:

  • mix là trình quản lý gói elixir, giống như NPM dành cho JavaScript.
  • phx là từ khóa được liên kết với khung Phoenix.
  • mới tạo một ứng dụng mới. Nếu bạn muốn biết thêm về nó, chỉ cần viết mix phx.new trong shell lệnh: nó sẽ hiển thị tài liệu. Mới không có phx. ở phía trước tạo một ứng dụng Elixir đơn giản, như chúng ta sẽ thấy sau.
  • [Destination_folder] là nơi bạn muốn ứng dụng của mình trở thành.
Lưu ý: nếu đó là một ứng dụng ô, nó sẽ tạo thư mục và thêm _um giác sau tên.
  • --um giác nói với hỗn hợp để tạo ra một ứng dụng ô.

Tại một số điểm, lệnh này sẽ hỏi bạn nếu bạn muốn tìm nạp và cài đặt các phụ thuộc. Nếu bạn có ý định sử dụng docker, nó không bắt buộc. Nếu không, gõ Y và nhấn enter.

Lệnh này tạo một ứng dụng có hai thư mục (ứng dụng và cấu hình) và một vài tệp, bao gồm các tệp cấu hình cho nhiều môi trường. Hầu hết trong số họ là commons (.gitignore, README.md,).

Hai tệp bạn có thể không biết là .formatter.exs và mix.exs. Mỗi người trong số họ là một tệp Elixir Script (.exs). mix.exs xử lý cấu hình trộn cho dự án này, bao gồm mô tả, các phụ thuộc và đôi khi những thứ khác. Chúng ta sẽ nói về .formatter.exs trong một vài đoạn.

Một khi lệnh đã làm mọi thứ nó phải làm, đừng làm theo những gì thuốc tiên khuyên bạn nên làm. Thay vào đó hãy làm:

$> cd [Destination_folder] _um giác && rm -rf ./apps/*

Làm như vậy sẽ xóa hai ứng dụng Phoenix tạo cho chúng tôi khi chúng tôi tạo ứng dụng ô. Tùy thuộc vào những gì bạn muốn, bạn có thể giữ chúng. Nhưng, đối với hướng dẫn này, chúng tôi đã giành chiến thắng sử dụng chúng: web web trực tuyến nếu cho một ứng dụng công cộng. Tôi sử dụng Angular trên máy chủ Node và có lẽ bạn cũng thích thứ gì đó được xây dựng cho giao diện người dùng, như React hoặc VueJS.

Chúng tôi cũng muốn điều chỉnh tên của các ứng dụng, đó là lý do tại sao chúng tôi cũng loại bỏ phần cuối.

Lưu ý: Một số bạn có thể lập luận rằng chúng tôi có thể lưu trữ và biên dịch dự án giao diện người dùng trong ứng dụng ô. Và bạn có thể đúng, nhưng tôi không muốn dành thời gian để hiểu cách làm, ít nhất là bây giờ. Nhưng nếu bạn biết cách thực hiện, hãy viết một bài báo vừa, gửi cho tôi một liên kết đến nó, và tôi sẽ đăng nó ở đây! :)

Cuối cùng, .formatter.exs là một tệp cho phép bạn sử dụng lệnh định dạng themix. Mục đích là định dạng từng tệp chứa mã elixir, vì vậy chúng tuân theo các quy tắc viết giống nhau, giúp chúng dễ đọc hơn cho mọi người.

Tôi không nên tác động đến mã của bạn nhiều, vì các ngôn ngữ chức năng không được phép như các ngôn ngữ lặp hoặc ngôn ngữ đối tượng, đặc biệt là khi chúng tôi tuân theo ý tưởng chính của mô hình chức năng (rất nhiều hàm ngắn, thuần túy), nhưng nó có thể tiện dụng tùy thuộc của tình hình.

Bây giờ chúng tôi sẽ tạo ra 5 dự án bên trong.

Để làm như vậy, hãy để di chuyển đến thư mục ứng dụng:

$> Ứng dụng cd
Cảnh báo !! Hãy cẩn thận: tên của mỗi thư mục chúng tôi sẽ tạo sẽ phải giống với tên git kho lưu trữ git. Điều này là để tránh các biến chứng và cấu hình quá mức, vô dụng.

Thư mục này được thiết kế để chứa mỗi ứng dụng chúng tôi sẽ tạo. Đầu tiên sẽ là trang web quản trị. Để làm như vậy, chỉ cần thực hiện lệnh sau:

$> trộn phx.new quản trị viên - quản trị viên ứng dụng --no-ecto

Tùy chọn --app [name] cho phép chúng ta xác định tên của ứng dụng OTP, đó là một hệ thống thời gian chạy Erlang (để đơn giản hóa định nghĩa: đó là một ứng dụng độc lập và thư viện đầy đủ cùng một lúc).

Tùy chọn --no-ecto loại bỏ các bước để tạo tệp Ecto, đây là cách để tương tác với cơ sở dữ liệu PostgreQuery của chúng tôi.

Chúng ta có thể sử dụng tùy chọn --module nếu chúng ta muốn một tên cụ thể cho mô-đun chính. Khi chúng tôi không sử dụng nó, mô-đun sẽ lấy tên của thư mục (ở đây: admin).

Lưu ý: một mô-đun luôn bắt đầu bằng một chữ cái viết hoa.

Tôi tiếp tục khám phá các ứng dụng đã tạo cho hướng dẫn tiếp theo. Sửa đổi duy nhất chúng tôi sẽ làm trong phần này sẽ là trong mỗi tệp cấu hình, sau khi docker được thiết lập.

Khi chúng ta đặt tùy chọn --no-ecto, chúng ta cần tạo một ứng dụng để tương tác với cơ sở dữ liệu:

$> trộn cơ sở dữ liệu mới - cơ sở dữ liệu ứng dụng --sup

Chúng tôi không xây dựng một ứng dụng Phoenix ở đây, nhưng chỉ là một ứng dụng Elixir bình thường, với cây giám sát nhờ vào tùy chọn --sup. Tùy chọn này là loại tự động được thực hiện trong ứng dụng Phoenix, vì nó bắt buộc phải chạy.

Đây là lệnh để xây dựng ứng dụng API:

$> trộn phx.new api --app api --no-webpack --no-html --no-ecto

Tùy chọn --no-webpack loại bỏ các bước để tạo cơ sở CSS và JavaScript. Khi chúng tôi làm một API, chúng tôi không cần bất kỳ ai trong số họ.

Tùy chọn --no-html hủy bỏ bước tạo mẫu.

Lưu ý: Chúng tôi sẽ so sánh Cơ sở dữ liệu và Quản trị viên trong hướng dẫn tiếp theo, và Quản trị viên và API trong phần Tạo ra một API API.

Hãy để cùng nhau tạo ra hai ứng dụng cuối cùng:

$> trộn bộ tổng hợp mới - tổng hợp ứng dụng --sup
$> trộn phx.new webhook --app webhook --no-webpack --no-html --no-ecto

Tôi tách API, trình tổng hợp và ứng dụng webhook vì tôi muốn chúng hoạt động riêng. Vì mỗi ứng dụng có thể độc lập, bạn có thể muốn dừng API của mình nhưng không phải là trình tổng hợp hoặc webhook nếu có, ví dụ, có vi phạm bảo mật.

Mục đích của Bộ tổng hợp sẽ là lấy các bài đăng từ nguồn cấp tin tức twitter của bạn và Webhook sẽ ở đây để gửi dữ liệu tới những người được kết nối với ứng dụng của bạn. Vì Aggregator nên được gọi (nhưng nên gọi), chúng tôi không cần Phoenix ở đây. Chúng tôi sẽ sử dụng Poison để xử lý các cuộc gọi HTTP, nhưng chúng tôi sẽ thấy điều này trong phần thích hợp.

Chúng tôi đã làm xong ở đây! Nhưng trước khi đến Docker, chúng ta cần thêm một dòng trong một tệp:

  • Trong ứng dụng / quản trị / tài sản / pack.json thêm, "build": "webpack --mode Development" trong phần script. Làm như vậy sẽ tránh được một số vấn đề sau này.

Hãy để xử lý Docker ngay bây giờ

Khi dự án ô và các dự án phụ được tạo, chúng ta có thể tập trung vào Docker. Để làm như vậy, chúng ta cần tạo ba tệp:

  • một Dockerfile
  • một docker-compose.yml
  • một .env

Dockerfile tạo ra một hình ảnh docker, được sử dụng trong một container, chính nó là:

Một gói phần mềm nhẹ, độc lập, có thể thực thi của một phần mềm bao gồm mọi thứ cần thiết để chạy nó: mã, thời gian chạy, công cụ hệ thống, thư viện hệ thống, cài đặt.

Để tạo Dockerfile, hãy mở IDE của bạn vào ứng dụng ô gốc root và thêm một tệp có tên Dockerfile. Nó sẽ chứa một danh sách các lệnh. Danh sách này sẽ được thực hiện một lần đầy đủ, mỗi lệnh trong một thùng chứa tạm thời riêng lẻ. Và vì vậy để tạo ra hình ảnh đầy đủ mà chúng ta sẽ chạy sau.

Tiếp theo, chúng tôi sẽ làm việc trên Docker-compose:

Docker-compose là một công cụ để xác định và chạy các ứng dụng Docker đa container.

Tệp soạn thảo docker sẽ xác định vùng chứa nào sẽ được sử dụng. Nó cũng xác định một số cấu hình và các biến env. Tệp docker-compose phải được tạo ở thư mục gốc và được gọi là docker-compose.yml. Khi nó được tạo, đặt mã sau vào bên trong:

Vì chúng tôi đã bao gồm biến môi trường, chúng tôi cần xây dựng một .env:

Một thực hành tốt là thêm .env vào .gitignore và tạo .env.dist để chia sẻ cấu trúc mà không chia sẻ dữ liệu bạn đặt trong đó (bảo vệ mật khẩu, khóa API, v.v.).

Khi các tập tin docker-compose.yml và .env được tạo, chúng ta cần xây dựng hình ảnh docker:

$> xây dựng docker-compose

Sau khi quá trình xây dựng hoàn tất, hãy để thử dùng docker-compose của chúng tôi:

$> Docker-soạn

Bạn có thể phải chia sẻ bộ nhớ cục bộ của mình hoặc thực hiện một số cấu hình cụ thể cho docker. Bạn cũng có thể gặp sự cố tắt máy chủ thuốc tiên và nếu không, có thể bạn sẽ có thông báo lỗi. Điều này là bình thường, vì chúng tôi đã không cấu hình bất cứ thứ gì, và ngay cả khi nó đang hoạt động, nó vẫn chưa sẵn sàng.

Giết quá trình với một ctlr + c, và sau đó chỉ cần khởi chạy Postgres và Redis ở chế độ im lặng bằng lệnh sau:

$> docker-compose up -d postgres redis

Chúng sẽ chạy như những nhiệm vụ nền tảng, vì vậy chúng tôi đã giành chiến thắng và phải quan tâm đến chúng và chúng tôi đã giành chiến thắng vì bị làm phiền bởi nhật ký của chúng.

Bây giờ, hãy để Lừa lấy IP của thùng chứa Postgres để chúng tôi có thể sử dụng nó sau trong các tệp cấu hình của chúng tôi. Để làm như vậy, nhập:

$> Docker ps
$> docker tests -f '{{Range.NetworkSinstall.Networks}} {{. IPAddress}} {{end}}' [postgres_container_id]

docker ps hiển thị danh sách các container đang chạy. Với id của bộ chứa Postgres, sử dụng lệnh thứ hai để trích xuất IP và lưu nó cho lần sau.

Việc kiểm tra docker cho phép chúng tôi lấy dữ liệu về một container cụ thể. Tùy chọn đã thông qua cho phép chúng tôi chỉ nhận IP của vùng chứa mà chúng tôi sẽ sử dụng trong tệp .env của mình. Để làm như vậy, thay thế giá trị PSQL_HOST bằng kết quả bạn nhận được từ lệnh cuối cùng này.

Lưu ý: luôn khởi chạy postgres trước và redis second, vì IP được xác định theo thứ tự khởi chạy.

Để đơn giản hóa cuộc sống của chúng tôi, chúng tôi sẽ tự tạo cơ sở dữ liệu, với một lệnh quan trọng: docker-compose exec. Để làm như vậy, nhập:

$> Docker-compose exec postgres người dùng người dùng psql

docker-compose exec thực thi một lệnh trong một thùng chứa cụ thể (ở đây nó nằm trong postgrescontainer).

psql, là lệnh, là vỏ Postgres, và nó cần một cơ sở dữ liệu và vai trò để kết nối (ở đây là người dùng và người dùng). Để tạo dev và cơ sở dữ liệu thử nghiệm, hãy nhập lệnh sau:

TẠO RA cơ sở dữ liệu test_dev;
TẠO RA cơ sở dữ liệu test_test;

Để kiểm tra xem cơ sở dữ liệu có được tạo hay không, hãy nhập \ l và nhấn enter. Vào cuối danh sách, bạn sẽ thấy hai cơ sở dữ liệu.

Để rời PSQL, chỉ cần nhập \ q và nhấn enter. Cuối cùng, để dừng tất cả các container, bạn có thể sử dụng:

$> dừng docker-compose

Cấu hình ứng dụng

Giờ đây, chúng tôi đã có 5 ứng dụng được tạo và docker hoạt động, hãy để một chút cấu hình, đầu tiên là trong 4 ứng dụng phượng hoàng:

  • Trong mỗi ứng dụng được tạo, nhưng cơ sở dữ liệu, hãy mở tệp config / devs.exs và config / test.exs
  • Trong dev.exs, thay đổi cổng thành 4001, 4002, 4003 và 4004 (1 cổng cho mỗi ứng dụng)
  • Trong test.exs, thay đổi cổng thành 4101, 4102, 4103 và 4104 (1 cổng cho mỗi ứng dụng)

Rằng nó cho các ứng dụng phượng hoàng. Nhưng chúng ta cũng cần cấu hình ứng dụng cơ sở dữ liệu. Mọi sửa đổi ở đây sẽ được thực hiện trong ứng dụng / cơ sở dữ liệu:

  • Tạo thư mục cấu hình. Bên trong, tạo 5 tệp: config.exs, dev.exs, prod.exs, prod.secret.exs và test.exs
  • Trong mỗi tệp, thêm sử dụng Mix.Config ở đầu
  • Trong config.exs, thêm các dòng sau:
cấu hình: cơ sở dữ liệu,
  ecto numpose: [Cơ sở dữ liệu.Repo]
import_config "# {Mix.env ()}. exs"
  • Trong prod.exs, thêm dòng sau: import_config Hồi prod.secret.exs "
  • Trong các tệp khác, thêm (xem 2 dòng cuối):
cấu hình: cơ sở dữ liệu, cơ sở dữ liệu.Repo,
  tên người dùng: System.get_env ("POSTGRES_USER"),
  mật khẩu: System.get_env ("POSTGRES_PASSWORD"),
  cơ sở dữ liệu: System.get_env ("POSTGRES_DB_ENV"), # thay thế env bằng dev, kiểm tra hoặc xóa nó tùy thuộc vào tệp
  tên máy chủ: System.get_env ("POSTGRES_HOST"),
  pool_size: 10 # trong dev.exs et prod.secret.exs
  pool: Ecto.Ad chương.SQL.Sandbox # trong test.exs

Cuối cùng, hãy để thêm Ecto vào ứng dụng Cơ sở dữ liệu:

  • Mở cơ sở dữ liệu / mix.exs, trong danh sách dự án, thêm bí danh: bí danh ().
  • Vẫn trong cơ sở dữ liệu / mix.exs, trong danh sách deps, thêm {: ecto_sql, "~> 3.0"} và {: postgrex, "> = 0.0.0"}.
  • Một lần nữa, trong cơ sở dữ liệu / mix.exs, hãy thêm hàm bí danh, chẳng hạn như:
bí danh defp làm
  [
    . Up: ““
    Ect res et: ““ ““
    kiểm tra: [Khác ecto.create - yên lặng, Thời gian ecto.migrate, thử nghiệm
  ]
kết thúc
  • Bây giờ, hãy mở lib / cơ sở dữ liệu / application.ex và thêm Database.Repo trong danh sách con
  • Cuối cùng, tạo lib / cơ sở dữ liệu / repo.ex và đặt bên trong các mục sau:
cơ sở dữ liệu defmodule.Repo làm
  sử dụng Ecto.Repo,
    otp_app :: cơ sở dữ liệu,
    bộ chuyển đổi: Ecto.Ad chương.Postgres
kết thúc

Bây giờ bạn có thể thở, cấu hình và thiết lập đã kết thúc.

Với cấu hình đã hoàn tất, hãy để thử lại bộ chứa Elixir của chúng tôi:

$> docker-compose up -d postgres
$> Docker-soạn thành thuốc tiên

Truy cập trình duyệt của bạn và nhập localhost: 4001. Bạn sẽ thấy một cái gì đó giống như hình ảnh này, có nghĩa là Phoenix và Docker được cấu hình tốt:

Hãy thêm một liên lạc của mô hình con git

Bây giờ chúng tôi đã sẵn sàng cho dự án của mình, hãy để cho tạo một kho git cho ứng dụng ô.

Quan trọng: vì chiếc ô chứa các dự án khác, don don thêm, cam kết và thúc đẩy bất cứ điều gì cho đến bây giờ. Chỉ cần liên kết dự án của bạn với một kho lưu trữ git (git init và git remote add origin).

Vì hướng dẫn này được gửi đến những người có một số kinh nghiệm về git, tôi mong bạn biết cách làm như vậy. Nếu không, hãy làm theo hướng dẫn luận văn:

  • Nếu bạn tạo một dự án nguồn mở: Github
  • Nếu bạn muốn có một repo riêng: Gitlab

Trong trường hợp bạn tạo một dự án Github mã nguồn mở, hãy don thêm một .gitignore trong quá trình tạo dự án git. Bạn vẫn có thể tạo tệp LICENSE. Nếu bạn làm như vậy, trước khi đẩy, bạn sẽ phải làm:

$> git pull # nó sẽ thất bại, nhưng cho phép bạn có quyền truy cập vào master
$> git --set-upstream-to = origin / master master
$> git pull - không liên quan đến lịch sử

Khi dự án của bạn được tạo và thêm vào kho lưu trữ của bạn, hãy để di chuyển đến thư mục ứng dụng.

$> cd ./apps

Subodule Git

Tạo một dự án mới trên git cho mỗi ứng dụng, có cùng tên với thư mục ứng dụng. Một lần nữa, điều này cực kỳ quan trọng để tránh phải thực hiện nhiều cấu hình hơn mức cần thiết.

Liên kết mỗi ứng dụng với kho git liên quan và đẩy chúng. Sau khi hoàn thành, hãy quay lại thư mục ứng dụng. Từ đây, bạn chỉ cần nhập 5 lần cùng một lệnh:

$> git mô đun con thêm [repository_url]

Khi lệnh đầu tiên được thực hiện, một tệp mới sẽ được tạo: .gitmodule. Nó chứa danh sách của mỗi mô hình con được sử dụng.

Một từ về các mô hình con: bạn sẽ có thể cập nhật chúng ở thư mục gốc của dự án với một thao tác kéo đơn giản. Nhưng, giống như tôi, bạn cũng có thể cần phải kéo từng ứng dụng. Tôi có thể không tốt như bạn có thể với họ.

Ý tưởng của việc sử dụng các mô hình con là cho phép người khác chỉ truy cập các ứng dụng đã chọn mà bạn muốn họ truy cập, nhưng cũng để phân biệt bất kỳ ứng dụng nào của bạn, vì họ có thể không cần ứng dụng khác hoạt động. Điều này làm cho bạn cũng có thể theo dõi tiến trình riêng biệt (không có mỗi nhánh), v.v.

Quan trọng: Bây giờ bạn có thể thêm mọi thứ vào kho git của ứng dụng ô, cam kết và đẩy.

Để hoàn thành hướng dẫn này, chúng ta có thể thực hiện hai lệnh không bắt buộc:

$> trộn deps.get

Mà tải xuống các phụ thuộc Elixir phụ cần thiết.

$> Ứng dụng cd / quản trị viên / tài sản
$> npm cài đặt
$> npm chạy xây dựng

Điều này tải xuống các phụ thuộc JS và biên dịch chúng (và CSS) trong / private / static. Cảnh báo: bằng cách đó, bạn có thể ghi đè lên phần tĩnh trong bộ chứa docker vì chúng tôi đã đặt đường dẫn của thư mục này vào phần soạn thảo docker.

Đó là tất cả cho ngày hôm nay! Tôi hy vọng hướng dẫn thứ hai này làm hài lòng bạn và giúp bạn thiết lập một dự án Elixir dù.

Hướng dẫn tiếp theo, chúng tôi sẽ tạo phần người dùng của trang web quản trị và thêm một số bootstrap cho nó.

Cho đến lần sau, hạnh phúc mã hóa!

Chỉnh sửa 18/03/2019:

  • Thay đổi tất cả các tệp docker (bao gồm cả lời khuyên từ Eduard Liberumed về cài đặt env)
  • Thêm một ứng dụng thứ năm để xử lý tất cả các tương tác với cơ sở dữ liệu, phù hợp hơn với ý tưởng vi phạm bảo mật từ các API (với ý tưởng ban đầu, việc dừng API sẽ tạo ra lỗi trong ứng dụng khác là API được cho là xử lý dữ liệu)
  • Xóa Ecto khỏi bốn ứng dụng đầu tiên
  • Thêm thiết lập Ecto vào ứng dụng thứ năm vì nó không phải là ứng dụng phoenix

Tôi đã mất thời gian để quay lại viết lách và tôi xin lỗi vì điều đó cho bất kỳ ai muốn tìm hiểu thêm về dự án ô thông qua hướng dẫn này. Cuộc sống chỉ xảy ra.

Chỉnh sửa 19/03/2019: thêm một vài chi tiết trong phần git

Chỉnh sửa 20/03/2019: thêm một dòng trong Dockerfile RUN apt-get install -y inotify-tools

Chỉnh sửa 03/08/2019: cập nhật lên Elixir 1.9

Chỉnh sửa 17/09/2019: thay đổi Bộ tổng hợp từ ứng dụng Phoenix sang ứng dụng thông thường.