Dart — с нуля до развертывания 🚀


Давайте начнем ✨

Давайте создадим проект с нуля.

Если у вас настроен Flutter, dart уже должен быть в вашем PATH.

$ dart create server
Войдите в полноэкранный режим Выход из полноэкранного режима

Вы получите что-то вроде этого:

void main(List<String> arguments) {
  print('Hello world!');
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Для этого проекта мы будем использовать мощный сервер Shelf.

$ dart pub add shelf
Войдите в полноэкранный режим Выход из полноэкранного режима

Давайте добавим немного кода:

import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as shelf_io;

void main() async {
  var server = await shelf_io.serve(
      (Request request) => Response.ok('Hello World!'), '0.0.0.0', 8080);

  print('Serving at http://${server.address.host}:${server.port}');
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Введите localhost:8080:

Давайте подготовим Docker

Это не учебник по docker, поэтому я не буду останавливаться на его объяснении, этого хватило бы на серию постов 🤷♂️.

Dockerfile

FROM dart:stable AS build
WORKDIR /app
COPY pubspec.* ./
RUN dart pub get
COPY . .
RUN dart pub get --offline
RUN dart compile exe bin/server.dart -o bin/server
FROM scratch
COPY --from=build /runtime/ /
COPY --from=build /app/bin/server /app/bin/
CMD ["/app/bin/server"]
Войдите в полноэкранный режим Выход из полноэкранного режима

.dockerignore

.dockerignore
resources
CHANGELOG.md
LICENSE
README.md
Dockerfile
build/
.dart_tool/
.git/
.github/
.gitignore
.packages
Войдите в полноэкранный режим Выход из полноэкранного режима

docker-compose.yml

version: '3'
services:
  dart-server:
    build: .
    ports:
      - "8080:8080"
Войдите в полноэкранный режим Выход из полноэкранного режима

Давайте попробуем 🐛

$ docker compose up
Войдите в полноэкранный режим Выход из полноэкранного режима

Мы снова пробуем localhost:8080 и все нормально.

Препараты 👩🚀👨🚀🚀🚀.

Для этого мы будем использовать Github и Railway (потому что это отличные инструменты и они бесплатны).

Railway предоставит нам порт для нашего приложения, поэтому мы должны внести это изменение.

  • Мы обновляем наш код.
import 'dart:io';

import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as shelf_io;

void main() async {
  var port = int.tryParse(Platform.environment['PORT'] ?? '') ?? 8080;
  var server = await shelf_io.serve(
      (Request request) => Response.ok('Hello World!'), '0.0.0.0', port);

  print('Serving at http://${server.address.host}:${server.port}');
}
Войдите в полноэкранный режим Выход из полноэкранного режима
  • Загрузите его на Github.
  • Мы начинаем новый проект с Github на Railway.

  • Выберите репозиторий, Railway обнаружит наш Dockerfile и начнет его сборку.

  • После завершения он выведет журнал нашего приложения и даст нам URL.

И это все 🚀🚀🚀.

Мы в сети.

Понравилась ли вам практика? Попробовали ли вы другой язык?
Расскажите мне в комментариях и счастливого хакинга 🧑💻🎉

Оцените статью
Procodings.ru
Добавить комментарий