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