diff --git a/config.example.yaml b/config.example.yaml index 8b21547..ea5013e 100644 --- a/config.example.yaml +++ b/config.example.yaml @@ -13,6 +13,9 @@ port: 8081 # The default language configuration. defaultLanguage: + # The OCI runtime to use when running the container. + runtime: runc + # The maximum memory and swap usage (separately) of a container. memory: 256m diff --git a/src/Myriad/Config.hs b/src/Myriad/Config.hs index 813967b..1cc5a4e 100644 --- a/src/Myriad/Config.hs +++ b/src/Myriad/Config.hs @@ -21,6 +21,7 @@ type LanguageName = T.Text data Language = Language { _name :: LanguageName + , _runtime :: T.Text , _memory :: T.Text , _cpus :: Double , _timeout :: Int @@ -42,7 +43,8 @@ data Config = Config makeFieldLabelsWith classUnderscoreNoPrefixFields ''Config data DefaultLanguage = DefaultLanguage - { _memory :: T.Text + { _runtime :: T.Text + , _memory :: T.Text , _cpus :: Double , _timeout :: Int , _concurrent :: Int @@ -54,7 +56,8 @@ makeFieldLabelsWith classUnderscoreNoPrefixFields ''DefaultLanguage instance FromJSON DefaultLanguage where parseJSON = withObject "default language" $ \m -> DefaultLanguage - <$> m .: "memory" + <$> m .: "runtime" + <*> m .: "memory" <*> m .: "cpus" <*> m .: "timeout" <*> m .: "concurrent" @@ -63,6 +66,7 @@ instance FromJSON DefaultLanguage where data RawLanguage = RawLanguage { _name :: LanguageName + , _runtime :: Maybe T.Text , _memory :: Maybe T.Text , _cpus :: Maybe Double , _timeout :: Maybe Int @@ -76,6 +80,7 @@ makeFieldLabelsWith classUnderscoreNoPrefixFields ''RawLanguage instance FromJSON RawLanguage where parseJSON = withObject "language" $ \m -> RawLanguage <$> m .: "name" + <*> m .:? "runtime" <*> m .:? "memory" <*> m .:? "cpus" <*> m .:? "timeout" @@ -127,6 +132,7 @@ fromRawLanguage :: DefaultLanguage -> RawLanguage -> Language fromRawLanguage d r = Language { _name = r ^. #name + , _runtime = fromMaybe (d ^. #runtime) (r ^. #runtime) , _memory = fromMaybe (d ^. #memory) (r ^. #memory) , _cpus = fromMaybe (d ^. #cpus) (r ^. #cpus) , _timeout = fromMaybe (d ^. #timeout) (r ^. #timeout) diff --git a/src/Myriad/Docker.hs b/src/Myriad/Docker.hs index 11edbb4..e94b809 100644 --- a/src/Myriad/Docker.hs +++ b/src/Myriad/Docker.hs @@ -95,7 +95,9 @@ setupContainer lang = do cnt <- newContainerName lang logInfo ["Setting up new container ", cs cnt] exec_ - [ "docker run --rm --name=" + [ "docker run --runtime=" + , cs $ lang ^. #runtime + , " --rm --name=" , cs cnt -- User 1000 will be for setting up the environment , " -u1000:1000 -w/tmp/ -dt --net=none --cpus="