in ecs-cli/modules/cli/compose/project/project_parseV1V2.go [55:150]
func convertV1V2ToContainerConfig(context *project.Context, serviceName string, volumes *adapter.Volumes, service *config.ServiceConfig) (*adapter.ContainerConfig, error) {
logger.LogUnsupportedV1V2ServiceConfigFields(serviceName, service)
devices, err := adapter.ConvertToDevices(service.Devices)
if err != nil {
return nil, err
}
environment := adapter.ConvertToKeyValuePairs(context, service.Environment, serviceName)
extraHosts, err := adapter.ConvertToExtraHosts(service.ExtraHosts)
if err != nil {
return nil, err
}
logConfiguration, err := adapter.ConvertToLogConfiguration(service)
if err != nil {
return nil, err
}
memory := adapter.ConvertToMemoryInMB(int64(service.MemLimit))
memoryReservation := adapter.ConvertToMemoryInMB(int64(service.MemReservation))
// Validate memory and memory reservation
if memory == 0 && memoryReservation != 0 {
memory = memoryReservation
}
mountPoints, err := adapter.ConvertToMountPoints(service.Volumes, volumes)
if err != nil {
return nil, err
}
portMappings, err := adapter.ConvertToPortMappings(serviceName, service.Ports)
if err != nil {
return nil, err
}
shmSize := adapter.ConvertToMemoryInMB(int64(service.ShmSize))
tmpfs, err := adapter.ConvertToTmpfs(service.Tmpfs)
if err != nil {
return nil, err
}
ulimits, err := adapter.ConvertToULimits(service.Ulimits)
if err != nil {
return nil, err
}
volumesFrom, err := adapter.ConvertToVolumesFrom(service.VolumesFrom)
if err != nil {
return nil, err
}
stopTimeout, err := adapter.ConvertDurationStrToSeconds(service.StopGracePeriod)
if err != nil {
return nil, err
}
outputConfig := &adapter.ContainerConfig{
Name: serviceName,
CapAdd: service.CapAdd,
CapDrop: service.CapDrop,
Command: service.Command,
CPU: int64(service.CPUShares),
Devices: devices,
DNSSearchDomains: service.DNSSearch,
DNSServers: service.DNS,
DockerLabels: aws.StringMap(service.Labels),
DockerSecurityOptions: service.SecurityOpt,
Entrypoint: service.Entrypoint,
Environment: environment,
ExtraHosts: extraHosts,
Hostname: service.Hostname, // only set if not blank?
Image: service.Image,
Links: service.Links,
LogConfiguration: logConfiguration,
Memory: memory,
MemoryReservation: memoryReservation,
MountPoints: mountPoints,
PortMappings: portMappings,
PseudoTerminal: service.Tty,
Privileged: service.Privileged,
ReadOnly: service.ReadOnly,
ShmSize: shmSize,
StopTimeout: stopTimeout,
Tmpfs: tmpfs,
Ulimits: ulimits,
VolumesFrom: volumesFrom,
User: service.User,
WorkingDirectory: service.WorkingDir,
}
return outputConfig, nil
}