Merge pull request #101 from pruizlezcano/docker-api

Added remote docker host
This commit is contained in:
pawelmalak 2021-10-09 01:36:51 +02:00 committed by GitHub
commit 65a33f16fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 56 additions and 8 deletions

View File

@ -177,6 +177,8 @@ labels:
# - flame.icon=custom to make changes in app. ie: custom icon upload
```
And you must have activated the Docker sync option in the settings panel.
You can set up different apps in the same label adding `;` between each one.
```yml
@ -187,7 +189,28 @@ labels:
- flame.icon=icon-name1;icon-name2
```
And you must have activated the Docker sync option in the settings panel.
If you want to use a remote docker host follow this instructions in the host:
- Open the file `/lib/systemd/system/docker.service`, search for `ExecStart` and edit the value
```text
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:${PORT} -H unix:///var/run/docker.sock
```
>The above command will bind the docker engine server to the Unix socket as well as TCP port of your choice. “0.0.0.0” means docker-engine accepts connections from all IP addresses.
- Restart the daemon and Docker service
```shell
sudo systemctl daemon-reload
sudo service docker restart
```
- Test if it is working
```shell
curl http://${IP}:${PORT}/version
```
### Kubernetes integration

View File

@ -52,6 +52,7 @@ const OtherSettings = (props: ComponentProps): JSX.Element => {
bookmarksSameTab: 0,
searchSameTab: 0,
dockerApps: 1,
dockerHost: 'localhost',
kubernetesApps: 1,
unpinStoppedApps: 1,
});
@ -72,6 +73,7 @@ const OtherSettings = (props: ComponentProps): JSX.Element => {
bookmarksSameTab: searchConfig('bookmarksSameTab', 0),
searchSameTab: searchConfig('searchSameTab', 0),
dockerApps: searchConfig('dockerApps', 0),
dockerHost: searchConfig('dockerHost', 'localhost'),
kubernetesApps: searchConfig('kubernetesApps', 0),
unpinStoppedApps: searchConfig('unpinStoppedApps', 0),
});
@ -275,6 +277,17 @@ const OtherSettings = (props: ComponentProps): JSX.Element => {
{/* DOCKER SETTINGS */}
<h2 className={classes.SettingsSection}>Docker</h2>
<InputGroup>
<label htmlFor="dockerHost">Docker Host</label>
<input
type="text"
id="dockerHost"
name="dockerHost"
placeholder="dockerHost:port"
value={formData.dockerHost}
onChange={(e) => inputChangeHandler(e)}
/>
</InputGroup>
<InputGroup>
<label htmlFor="dockerApps">Use Docker API</label>
<select

View File

@ -19,6 +19,7 @@ export interface SettingsForm {
bookmarksSameTab: number;
searchSameTab: number;
dockerApps: number;
dockerHost: string;
kubernetesApps: number;
unpinStoppedApps: number;
}

View File

@ -65,16 +65,23 @@ exports.getApps = asyncWrapper(async (req, res, next) => {
if (useDockerApi && useDockerApi.value == 1) {
let containers = null;
const host = await Config.findOne({
where: { key: 'dockerHost' }
});
try {
let { data } = await axios.get(
'http://localhost/containers/json?{"status":["running"]}',
if(host.value.includes('localhost')) {
let { data } = await axios.get(`http://${host.value}/containers/json?{"status":["running"]}`,
{
socketPath: '/var/run/docker.sock',
}
);
containers = data;
socketPath: '/var/run/docker.sock'
});
containers = data;
} else {
let { data } = await axios.get(`http://${host.value}/containers/json?{"status":["running"]}`);
containers = data;
}
} catch {
logger.log("Can't connect to the docker socket", 'ERROR');
logger.log(`Can't connect to the docker api on ${host.value}`, 'ERROR');
}
if (containers) {

View File

@ -68,6 +68,10 @@
"key": "dockerApps",
"value": false
},
{
"key": "dockerHost",
"value": "localhost"
},
{
"key": "kubernetesApps",
"value": false