compose.yaml
flagd:
container_name: 'flagd'
image: ghcr.io/open-feature/flagd:latest
ports:
- '8013:8013'
volumes:
- ./flagd.yaml:/flagd.yaml
- ./flags.json:/flags.json
command: [ "start", "--config", "/flagd.yaml" ]
networks:
- sandbox_net
flagd.yaml
sources:
- uri: file:/flags.json
provider: file
server:
grpc:
port: 8013
http:
port: 8014
flags.json
{
"flags": {
"create-users": {
"state": "ENABLED",
"variants": {
"on": true,
"off": false
},
"defaultVariant": "on"
}
}
}
@Configuration
public class OpenFeatureConfig {
@Bean
public OpenFeatureAPI openFeatureAPI() {
FlagdOptions options = FlagdOptions.builder()
.host("localhost")
.port(8013)
.build();
FlagdProvider flagdProvider = new FlagdProvider(options);
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
api.setProviderAndWait(flagdProvider);
return api;
}
}
@Service
public class FeatureService {
private final Client client;
public FeatureService(OpenFeatureAPI openFeatureAPI) {
this.client = openFeatureAPI.getClient();
}
public boolean createUsersEnabled() {
return client.getBooleanValue("create-users", true);
}
}