mirror of https://github.com/docker/compose.git
88 lines
2.3 KiB
Go
88 lines
2.3 KiB
Go
|
package ecs
|
||
|
|
||
|
import (
|
||
|
"github.com/compose-spec/compose-go/compatibility"
|
||
|
"github.com/compose-spec/compose-go/types"
|
||
|
)
|
||
|
|
||
|
type FargateCompatibilityChecker struct {
|
||
|
compatibility.AllowList
|
||
|
}
|
||
|
|
||
|
var compatibleComposeAttributes = []string{
|
||
|
"services.command",
|
||
|
"services.container_name",
|
||
|
"services.cap_drop",
|
||
|
"services.depends_on",
|
||
|
"services.deploy",
|
||
|
"services.deploy.replicas",
|
||
|
"services.deploy.resources.limits",
|
||
|
"services.deploy.resources.limits.cpus",
|
||
|
"services.deploy.resources.limits.memory",
|
||
|
"services.deploy.resources.reservations",
|
||
|
"services.deploy.resources.reservations.cpus",
|
||
|
"services.deploy.resources.reservations.memory",
|
||
|
"services.deploy.update_config",
|
||
|
"services.deploy.update_config.parallelism",
|
||
|
"services.entrypoint",
|
||
|
"services.environment",
|
||
|
"services.env_file",
|
||
|
"services.healthcheck",
|
||
|
"services.healthcheck.interval",
|
||
|
"services.healthcheck.retries",
|
||
|
"services.healthcheck.start_period",
|
||
|
"services.healthcheck.test",
|
||
|
"services.healthcheck.timeout",
|
||
|
"services.image",
|
||
|
"services.init",
|
||
|
"services.logging",
|
||
|
"services.logging.options",
|
||
|
"services.networks",
|
||
|
"services.ports",
|
||
|
"services.ports.mode",
|
||
|
"services.ports.target",
|
||
|
"services.ports.protocol",
|
||
|
"services.secrets",
|
||
|
"services.secrets.source",
|
||
|
"services.secrets.target",
|
||
|
"services.user",
|
||
|
"services.working_dir",
|
||
|
"secrets.external",
|
||
|
"secrets.name",
|
||
|
"secrets.file",
|
||
|
}
|
||
|
|
||
|
func (c *FargateCompatibilityChecker) CheckImage(service *types.ServiceConfig) {
|
||
|
if service.Image == "" {
|
||
|
c.Incompatible("service %s doesn't define a Docker image to run", service.Name)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (c *FargateCompatibilityChecker) CheckPortsPublished(p *types.ServicePortConfig) {
|
||
|
if p.Published == 0 {
|
||
|
p.Published = p.Target
|
||
|
}
|
||
|
if p.Published != p.Target {
|
||
|
c.Incompatible("published port can't be set to a distinct value than container port")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (c *FargateCompatibilityChecker) CheckCapAdd(service *types.ServiceConfig) {
|
||
|
add := []string{}
|
||
|
for _, cap := range service.CapAdd {
|
||
|
switch cap {
|
||
|
case "SYS_PTRACE":
|
||
|
add = append(add, cap)
|
||
|
default:
|
||
|
c.Incompatible("ECS doesn't allow to add capability %s", cap)
|
||
|
}
|
||
|
}
|
||
|
service.CapAdd = add
|
||
|
}
|
||
|
|
||
|
func (c *FargateCompatibilityChecker) CheckLoggingDriver(config *types.LoggingConfig) {
|
||
|
if config.Driver != "" && config.Driver != "awslogs" {
|
||
|
c.Unsupported("services.logging.driver %s is not supported", config.Driver)
|
||
|
}
|
||
|
}
|