Édition du docker-compose.yml depuis la page d'un conteneur
Vérification par docker compose config avant écriture, application avec docker compose up -d et retour à la version précédente en cas d'échec. Historique des versions par fichier. Le Caddyfile et le compose gardent un retour à la ligne final. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
dcdac915f9
commit
c106fcfc62
27 files changed
+1035
-58
No files matched your search
@@ -0,0 +1,55 @@
|
||||
import type { HttpContext } from '@adonisjs/core/http'
|
||||
import composeService from '#services/compose_service'
|
||||
import { actor, audit } from '#services/audit'
|
||||
import { updateComposeValidator } from '#validators/compose'
|
||||
|
||||
const SAVE_ACTION = 'Modification du docker-compose.yml'
|
||||
|
||||
/**
|
||||
* The docker-compose.yml of a container, from the container page.
|
||||
*/
|
||||
export default class ComposeController {
|
||||
async show({ params }: HttpContext) {
|
||||
return composeService.show(params.id)
|
||||
}
|
||||
|
||||
async version({ params }: HttpContext) {
|
||||
return composeService.version(params.id, Number(params.versionId))
|
||||
}
|
||||
|
||||
async update(ctx: HttpContext) {
|
||||
const { content, reason, apply } = await ctx.request.validateUsing(updateComposeValidator)
|
||||
const target = await composeService.locate(ctx.params.id)
|
||||
const result = await composeService.save(target, content, {
|
||||
...actor(ctx),
|
||||
reason: reason || 'Modification manuelle',
|
||||
apply,
|
||||
})
|
||||
|
||||
if (!result.ok) {
|
||||
await audit(ctx, {
|
||||
action: SAVE_ACTION,
|
||||
target: target.file,
|
||||
status: 'error',
|
||||
output: result.output,
|
||||
})
|
||||
return ctx.response.unprocessableEntity({
|
||||
message: 'docker compose a refusé le fichier : rien n’a été modifié.',
|
||||
output: result.output,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* When applied, the job records the action itself.
|
||||
*/
|
||||
if (result.changed && result.jobId === null) {
|
||||
await audit(ctx, {
|
||||
action: SAVE_ACTION,
|
||||
target: target.file,
|
||||
status: 'success',
|
||||
output: result.output || null,
|
||||
})
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user