Empecemos ✨
Creemos el proyecto desde 0.
Si tienes configurado Flutter, dart ya debería estar en tu PATH también.
$dart create server
Obtendrás algo como esto:
voidmain(List<String>arguments){print('Hello world!');}
Para este proyecto usaremos el poderoso server deShelf.
$dart pub add shelf
Agreguemos algo de código:
import'package:shelf/shelf.dart';import'package:shelf/shelf_io.dart'asshelf_io;voidmain()async{varserver=awaitshelf_io.serve((Requestrequest)=>Response.ok('Hello World!'),'0.0.0.0',8080);print('Serving at http://${server.address.host}:${server.port}');}
Entramos alocalhost:8080:
Preparemos Docker
Esto no es un tutorial de docker así que no me detendré a explicarlo, eso daría para una serie de publicaciones 🤷♂️
Dockerfile
FROMdart:stableASbuildWORKDIR /appCOPY pubspec.* ./RUNdart pub getCOPY . .RUNdart pub get--offlineRUNdart compile exe bin/server.dart-o bin/serverFROM scratchCOPY --from=build /runtime/ /COPY --from=build /app/bin/server /app/bin/CMD ["/app/bin/server"]
.dockerignore
.dockerignoreresourcesCHANGELOG.mdLICENSEREADME.mdDockerfilebuild/.dart_tool/.git/.github/.gitignore.packages
docker-compose.yml
version:'3'services:dart-server:build:.ports:-"8080:8080"
Vamos a probarlo 🐛
$docker compose up
Probamos de nuevolocalhost:8080 y todo normal.
Preparativos 👩🚀👨🚀
Para esto usaremosGithub yRailway (Por qué son excelentes herramientas y son gratis).
Railway nos dará un puerto para nuestra aplicación así que hay que hacer ese cambio.
- Actualizamos nuestro código.
import'dart:io';import'package:shelf/shelf.dart';import'package:shelf/shelf_io.dart'asshelf_io;voidmain()async{varport=int.tryParse(Platform.environment['PORT']??'')??8080;varserver=awaitshelf_io.serve((Requestrequest)=>Response.ok('Hello World!'),'0.0.0.0',port);print('Serving at http://${server.address.host}:${server.port}');}
- Lo subimos aGithub.
Elegimos el repositorio, Railway detectara nuestroDockerfile y empezara a armarlo.
Al terminar nos imprimirá el log de nuestra aplicación y nos dará un URL.
Y listo 🚀🚀
Te gusto la practica? intentamos con otro lenguaje?
Cuéntame en los comentarios y Happy Hacking 🧑💻🎉
Top comments(0)
For further actions, you may consider blocking this person and/orreporting abuse