ballerina 学习二十五 项目docker 部署&& 运行

ballerina 官方提供了docker 的runtime,还是比较方便的

基本项目创建

  • 使用cli创建项目

按照提示操作就行

ballerina init  -i
  • 项目结构

添加了dockerfile 以及docker-compose 简单http 服务

├── Ballerina.toml
├── Dockerfile
├── README.md
├── docker-compose.yml
├── hello_service.bal
├── target
│ └── hello_service.balx
└── tests
    └── hello_service_test.bal
  • 添加简单http server 代码(hello_service.bal)
// A system package containing protocol access constructs
// Package objects referenced with 'http:' in code
import ballerina/http;
import ballerina/io;

// A service endpoint represents a listener
endpoint http:Listener listener {
port:9090
};

// A service is a network-accessible API
// Advertised on '/hello', port comes from listener endpoint
service<http:Service> hello bind listener {

// A resource is an invokable API method
// Accessible at '/hello/sayHello
// 'caller' is the client invoking this resource
sayHello (endpoint caller, http:Request request) {

// Create object to carry data back to caller
http:Response response = new;

// Objects and structs can have function calls
response.setTextPayload("Hello Ballerina!\n");

// Send a response back to caller
// Errors are ignored with '_'
// -> indicates a synchronous network-bound call
_ = caller -> respond(response);
}
}

Dockerfile

官方提供了基础镜像 ballerina/ballerina

  • dockerfile
# build stage
# FROM ballerina/ballerina-platform AS build-env
# ADD . /home/ballerina/
# RUN ballerina build hello_service.bal
# RUN ls .
FROM ballerina/ballerina
EXPOSE 9090
COPY hello_service.bal /home/ballerina
RUN ls .
ENTRYPOINT [ "ballerina","run","hello_service.bal" ]

集成docker-compose

  • docker-compose.yml
version: "3"
services:
http:
build: .
image: myhttp
ports:
- "9099:9090"

构建&&运行

docker-compose build
docker-compose up -d

效果

参考资料

https://hub.docker.com/r/ballerina/ballerina-platform/
https://hub.docker.com/r/ballerina/ballerina/
https://github.com/rongfengliang/ballerina-docker-demo

posted on   荣锋亮  阅读(313)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2017-06-02 drill 数据库查询方式简单说明

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示