🚧 Work in progress on docker integration

This commit is contained in:
ajnart
2022-06-20 09:00:42 +02:00
committed by Thomas Camlong
parent aab1492934
commit df7e833b84
5 changed files with 275 additions and 6 deletions

View File

@@ -45,6 +45,7 @@
"axios": "^0.27.2",
"cookies-next": "^2.0.4",
"dayjs": "^1.11.3",
"dockerode": "^3.3.2",
"framer-motion": "^6.3.1",
"js-file-download": "^0.4.12",
"next": "12.1.6",
@@ -59,6 +60,7 @@
"@next/bundle-analyzer": "^12.1.4",
"@next/eslint-plugin-next": "^12.1.4",
"@storybook/react": "^6.5.4",
"@types/dockerode": "^3.3.9",
"@types/node": "^17.0.23",
"@types/react": "17.0.43",
"@types/uuid": "^8.3.4",

View File

@@ -0,0 +1,48 @@
import { ActionIcon, Drawer, Group, List, Text } from '@mantine/core';
import { IconBrandDocker } from '@tabler/icons';
import axios from 'axios';
import { useEffect, useState } from 'react';
import Docker from 'dockerode';
export default function DockerDrawer(props: any) {
const [opened, setOpened] = useState(false);
const [containers, setContainers] = useState<any[]>([]);
useEffect(() => {
axios.get('/api/docker/containers').then((res) => {
setContainers(res.data);
});
}, []);
return (
<>
<Drawer
opened={opened}
onClose={() => setOpened(false)}
title="Register"
padding="xl"
size="full"
>
<List>
{containers.map((container) => (
<List.Item key={container.Id}>
<Text>{container.Names[0]}</Text>
<Text>{container.State}</Text>
<Text>{container.Status}</Text>
<Text>{container.Image}</Text>
</List.Item>
))}
</List>
</Drawer>
<Group position="center">
<ActionIcon
variant="default"
radius="md"
size="xl"
color="blue"
onClick={() => setOpened(true)}
>
<IconBrandDocker />
</ActionIcon>
</Group>
</>
);
}

View File

@@ -18,6 +18,7 @@ import { AddItemShelfButton } from '../AppShelf/AddAppShelfItem';
import { SettingsMenuButton } from '../Settings/SettingsMenu';
import { ModuleWrapper } from '../modules/moduleWrapper';
import { CalendarModule, TotalDownloadsModule, WeatherModule, DateModule } from '../modules';
import DockerDrawer from '../Docker/DockerDrawer';
const HEADER_HEIGHT = 60;
@@ -47,6 +48,7 @@ export function Header(props: any) {
</Box>
<Group noWrap>
<SearchBar />
<DockerDrawer />
<SettingsMenuButton />
<AddItemShelfButton />
<ActionIcon className={classes.burger} variant="default" radius="md" size="xl">

View File

@@ -0,0 +1,27 @@
import axios from 'axios';
import { NextApiRequest, NextApiResponse } from 'next';
import Docker from 'dockerode';
const docker = new Docker();
async function Get(req: NextApiRequest, res: NextApiResponse) {
const con: Docker.Container = docker.getContainer('hello');
docker.listContainers({ all: true }, (err, containers) => {
if (err) {
res.status(500).json({ error: err });
}
res.status(200).json(containers);
});
}
export default async (req: NextApiRequest, res: NextApiResponse) => {
// Filter out if the reuqest is a POST or a GET
if (req.method === 'GET') {
return Get(req, res);
}
return res.status(405).json({
statusCode: 405,
message: 'Method not allowed',
});
};

202
yarn.lock
View File

@@ -3874,6 +3874,26 @@ __metadata:
languageName: node
linkType: hard
"@types/docker-modem@npm:*":
version: 3.0.2
resolution: "@types/docker-modem@npm:3.0.2"
dependencies:
"@types/node": "*"
"@types/ssh2": "*"
checksum: 1f23db30e6e9bdd4c6d6e43572fb7ac7251d106a1906a9f3faabac393897712a5a9cd5a471baedc0ac8055dab3f48eda331f41a1e2c7c6bbe3c7f433e039151c
languageName: node
linkType: hard
"@types/dockerode@npm:^3.3.9":
version: 3.3.9
resolution: "@types/dockerode@npm:3.3.9"
dependencies:
"@types/docker-modem": "*"
"@types/node": "*"
checksum: 3d03c68addb37c50e9557fff17171d26423aa18e544cb24e4caa81ebcec39ccc1cafed7adbfb8f4220d8ed23028d231717826bb77a786d425885c4f4cc37536d
languageName: node
linkType: hard
"@types/eslint-scope@npm:^3.7.3":
version: 3.7.3
resolution: "@types/eslint-scope@npm:3.7.3"
@@ -4151,6 +4171,25 @@ __metadata:
languageName: node
linkType: hard
"@types/ssh2-streams@npm:*":
version: 0.1.9
resolution: "@types/ssh2-streams@npm:0.1.9"
dependencies:
"@types/node": "*"
checksum: 190f3c235bf19787cd255f366d3ac9233875750095f3c73d15e72a1e67a826aed7e7c389603c5e89cb6420b87ff6dffc566f9174e546ddb7ff8c8dc2e8b00def
languageName: node
linkType: hard
"@types/ssh2@npm:*":
version: 0.5.52
resolution: "@types/ssh2@npm:0.5.52"
dependencies:
"@types/node": "*"
"@types/ssh2-streams": "*"
checksum: bc1c76ac727ad73ddd59ba849cf0ea3ed2e930439e7a363aff24f04f29b74f9b1976369b869dc9a018223c9fb8ad041c09a0f07aea8cf46a8c920049188cddae
languageName: node
linkType: hard
"@types/stack-utils@npm:^2.0.0":
version: 2.0.1
resolution: "@types/stack-utils@npm:2.0.1"
@@ -5196,6 +5235,15 @@ __metadata:
languageName: node
linkType: hard
"asn1@npm:^0.2.4":
version: 0.2.6
resolution: "asn1@npm:0.2.6"
dependencies:
safer-buffer: ~2.1.0
checksum: 39f2ae343b03c15ad4f238ba561e626602a3de8d94ae536c46a4a93e69578826305366dc09fbb9b56aec39b4982a463682f259c38e59f6fa380cd72cd61e493d
languageName: node
linkType: hard
"assert@npm:^1.1.1":
version: 1.5.0
resolution: "assert@npm:1.5.0"
@@ -5519,7 +5567,7 @@ __metadata:
languageName: node
linkType: hard
"base64-js@npm:^1.0.2":
"base64-js@npm:^1.0.2, base64-js@npm:^1.3.1":
version: 1.5.1
resolution: "base64-js@npm:1.5.1"
checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005
@@ -5541,6 +5589,15 @@ __metadata:
languageName: node
linkType: hard
"bcrypt-pbkdf@npm:^1.0.2":
version: 1.0.2
resolution: "bcrypt-pbkdf@npm:1.0.2"
dependencies:
tweetnacl: ^0.14.3
checksum: 4edfc9fe7d07019609ccf797a2af28351736e9d012c8402a07120c4453a3b789a15f2ee1530dc49eee8f7eb9379331a8dd4b3766042b9e502f74a68e7f662291
languageName: node
linkType: hard
"better-opn@npm:^2.1.1":
version: 2.1.1
resolution: "better-opn@npm:2.1.1"
@@ -5587,6 +5644,17 @@ __metadata:
languageName: node
linkType: hard
"bl@npm:^4.0.3":
version: 4.1.0
resolution: "bl@npm:4.1.0"
dependencies:
buffer: ^5.5.0
inherits: ^2.0.4
readable-stream: ^3.4.0
checksum: 9e8521fa7e83aa9427c6f8ccdcba6e8167ef30cc9a22df26effcc5ab682ef91d2cbc23a239f945d099289e4bbcfae7a192e9c28c84c6202e710a0dfec3722662
languageName: node
linkType: hard
"bluebird@npm:^3.5.5":
version: 3.7.2
resolution: "bluebird@npm:3.7.2"
@@ -5842,6 +5910,23 @@ __metadata:
languageName: node
linkType: hard
"buffer@npm:^5.5.0":
version: 5.7.1
resolution: "buffer@npm:5.7.1"
dependencies:
base64-js: ^1.3.1
ieee754: ^1.1.13
checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84
languageName: node
linkType: hard
"buildcheck@npm:0.0.3":
version: 0.0.3
resolution: "buildcheck@npm:0.0.3"
checksum: baf30605c56e80c2ca0502e40e18f2ebc7075bb4a861c941c0b36cd468b27957ed11a62248003ce99b9e5f91a7dfa859b30aad4fa50f0090c77a6f596ba20e6d
languageName: node
linkType: hard
"builtin-status-codes@npm:^3.0.0":
version: 3.0.0
resolution: "builtin-status-codes@npm:3.0.0"
@@ -6679,6 +6764,17 @@ __metadata:
languageName: node
linkType: hard
"cpu-features@npm:~0.0.4":
version: 0.0.4
resolution: "cpu-features@npm:0.0.4"
dependencies:
buildcheck: 0.0.3
nan: ^2.15.0
node-gyp: latest
checksum: a20d58e41e63182b34753dfe23bd1d967944ec13d84b70849b5d334fb4a558b7e71e7f955ed86c8e75dd65b5c5b882f1c494174d342cb6d8a062d77f79d39596
languageName: node
linkType: hard
"cpy@npm:^8.1.2":
version: 8.1.2
resolution: "cpy@npm:8.1.2"
@@ -7243,6 +7339,28 @@ __metadata:
languageName: node
linkType: hard
"docker-modem@npm:^3.0.0":
version: 3.0.5
resolution: "docker-modem@npm:3.0.5"
dependencies:
debug: ^4.1.1
readable-stream: ^3.5.0
split-ca: ^1.0.1
ssh2: ^1.4.0
checksum: 79027f8e719a77031790af628f9aa1d72607ec3769149de3a4b683930f2e4d113ae0e3a7345b32ff3b2289f886879f4fcf216afb17908178ba00f9661c4e0dd6
languageName: node
linkType: hard
"dockerode@npm:^3.3.2":
version: 3.3.2
resolution: "dockerode@npm:3.3.2"
dependencies:
docker-modem: ^3.0.0
tar-fs: ~2.0.1
checksum: 69b60547ed2e6156e6ec1df16fccea9150c935ee0b0517723b4d05a5d840a01d4cd945341390d24b7fa301383be64145d563d9319be56d487a5bcbf9f872ee59
languageName: node
linkType: hard
"doctrine@npm:^2.1.0":
version: 2.1.0
resolution: "doctrine@npm:2.1.0"
@@ -7466,7 +7584,7 @@ __metadata:
languageName: node
linkType: hard
"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0":
"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1":
version: 1.4.4
resolution: "end-of-stream@npm:1.4.4"
dependencies:
@@ -8716,6 +8834,13 @@ __metadata:
languageName: node
linkType: hard
"fs-constants@npm:^1.0.0":
version: 1.0.0
resolution: "fs-constants@npm:1.0.0"
checksum: 18f5b718371816155849475ac36c7d0b24d39a11d91348cfcb308b4494824413e03572c403c86d3a260e049465518c4f0d5bd00f0371cdfcad6d4f30a85b350d
languageName: node
linkType: hard
"fs-extra@npm:^10.1.0":
version: 10.1.0
resolution: "fs-extra@npm:10.1.0"
@@ -9446,6 +9571,7 @@ __metadata:
"@nivo/line": ^0.79.1
"@storybook/react": ^6.5.4
"@tabler/icons": ^1.68.0
"@types/dockerode": ^3.3.9
"@types/node": ^17.0.23
"@types/react": 17.0.43
"@types/uuid": ^8.3.4
@@ -9454,6 +9580,7 @@ __metadata:
axios: ^0.27.2
cookies-next: ^2.0.4
dayjs: ^1.11.3
dockerode: ^3.3.2
eslint: ^8.11.0
eslint-config-airbnb: ^19.0.4
eslint-config-airbnb-typescript: ^16.1.0
@@ -9704,7 +9831,7 @@ __metadata:
languageName: node
linkType: hard
"ieee754@npm:^1.1.4":
"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4":
version: 1.2.1
resolution: "ieee754@npm:1.2.1"
checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e
@@ -11841,6 +11968,13 @@ __metadata:
languageName: node
linkType: hard
"mkdirp-classic@npm:^0.5.2":
version: 0.5.3
resolution: "mkdirp-classic@npm:0.5.3"
checksum: 3f4e088208270bbcc148d53b73e9a5bd9eef05ad2cbf3b3d0ff8795278d50dd1d11a8ef1875ff5aea3fa888931f95bfcb2ad5b7c1061cfefd6284d199e6776ac
languageName: node
linkType: hard
"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3":
version: 0.5.6
resolution: "mkdirp@npm:0.5.6"
@@ -11920,7 +12054,7 @@ __metadata:
languageName: node
linkType: hard
"nan@npm:^2.12.1":
"nan@npm:^2.12.1, nan@npm:^2.15.0, nan@npm:^2.16.0":
version: 2.16.0
resolution: "nan@npm:2.16.0"
dependencies:
@@ -13695,7 +13829,7 @@ __metadata:
languageName: node
linkType: hard
"readable-stream@npm:^3.6.0":
"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0":
version: 3.6.0
resolution: "readable-stream@npm:3.6.0"
dependencies:
@@ -14178,7 +14312,7 @@ __metadata:
languageName: node
linkType: hard
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.0":
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"
checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0
@@ -14659,6 +14793,13 @@ __metadata:
languageName: node
linkType: hard
"split-ca@npm:^1.0.1":
version: 1.0.1
resolution: "split-ca@npm:1.0.1"
checksum: 1e7409938a95ee843fe2593156a5735e6ee63772748ee448ea8477a5a3e3abde193c3325b3696e56a5aff07c7dcf6b1f6a2f2a036895b4f3afe96abb366d893f
languageName: node
linkType: hard
"split-string@npm:^3.0.1, split-string@npm:^3.0.2":
version: 3.1.0
resolution: "split-string@npm:3.1.0"
@@ -14675,6 +14816,23 @@ __metadata:
languageName: node
linkType: hard
"ssh2@npm:^1.4.0":
version: 1.11.0
resolution: "ssh2@npm:1.11.0"
dependencies:
asn1: ^0.2.4
bcrypt-pbkdf: ^1.0.2
cpu-features: ~0.0.4
nan: ^2.16.0
dependenciesMeta:
cpu-features:
optional: true
nan:
optional: true
checksum: e40cb9f171741a807c170dc555078aa8c49dc93dd36fc9c8be026fce1cfd31f0d37078d9b60a0f2cfb11d0e007ed5407376b72f8a0ef9f2cb89574632bbfb824
languageName: node
linkType: hard
"ssri@npm:^6.0.1":
version: 6.0.2
resolution: "ssri@npm:6.0.2"
@@ -15125,6 +15283,31 @@ __metadata:
languageName: node
linkType: hard
"tar-fs@npm:~2.0.1":
version: 2.0.1
resolution: "tar-fs@npm:2.0.1"
dependencies:
chownr: ^1.1.1
mkdirp-classic: ^0.5.2
pump: ^3.0.0
tar-stream: ^2.0.0
checksum: 26cd297ed2421bc8038ce1a4ca442296b53739f409847d495d46086e5713d8db27f2c03ba2f461d0f5ddbc790045628188a8544f8ae32cbb6238b279b68d0247
languageName: node
linkType: hard
"tar-stream@npm:^2.0.0":
version: 2.2.0
resolution: "tar-stream@npm:2.2.0"
dependencies:
bl: ^4.0.3
end-of-stream: ^1.4.1
fs-constants: ^1.0.0
inherits: ^2.0.3
readable-stream: ^3.1.1
checksum: 699831a8b97666ef50021c767f84924cfee21c142c2eb0e79c63254e140e6408d6d55a065a2992548e72b06de39237ef2b802b99e3ece93ca3904a37622a66f3
languageName: node
linkType: hard
"tar@npm:^6.0.2, tar@npm:^6.1.11, tar@npm:^6.1.2":
version: 6.1.11
resolution: "tar@npm:6.1.11"
@@ -15504,6 +15687,13 @@ __metadata:
languageName: node
linkType: hard
"tweetnacl@npm:^0.14.3":
version: 0.14.5
resolution: "tweetnacl@npm:0.14.5"
checksum: 6061daba1724f59473d99a7bb82e13f211cdf6e31315510ae9656fefd4779851cb927adad90f3b488c8ed77c106adc0421ea8055f6f976ff21b27c5c4e918487
languageName: node
linkType: hard
"type-check@npm:^0.4.0, type-check@npm:~0.4.0":
version: 0.4.0
resolution: "type-check@npm:0.4.0"