aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/docker
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/docker')
-rw-r--r--src/plugins/docker/dockerdevice.cpp7
-rw-r--r--src/plugins/docker/dockerdevice.h4
-rw-r--r--src/plugins/docker/dockerdevicewidget.cpp13
-rw-r--r--src/plugins/docker/dockerdevicewidget.h1
4 files changed, 22 insertions, 3 deletions
diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp
index 58641b32010..292e8c9ee97 100644
--- a/src/plugins/docker/dockerdevice.cpp
+++ b/src/plugins/docker/dockerdevice.cpp
@@ -482,8 +482,8 @@ bool DockerDevicePrivate::createContainer()
continue;
dockerCreate.addArgs({"-v", path.nativePath() + ':' + containerPath.nativePath()});
}
-
- dockerCreate.addArgs({"--entrypoint", "/bin/sh"});
+ if (!m_data.keepEntryPoint)
+ dockerCreate.addArgs({"--entrypoint", "/bin/sh"});
dockerCreate.addArg(m_data.repoAndTag());
@@ -563,6 +563,7 @@ const char DockerDeviceDataTagKey[] = "DockerDeviceDataTag";
const char DockerDeviceDataSizeKey[] = "DockerDeviceDataSize";
const char DockerDeviceUseOutsideUser[] = "DockerDeviceUseUidGid";
const char DockerDeviceMappedPaths[] = "DockerDeviceMappedPaths";
+const char DockerDeviceKeepEntryPoint[] = "DockerDeviceKeepEntryPoint";
void DockerDevice::fromMap(const QVariantMap &map)
{
@@ -576,6 +577,7 @@ void DockerDevice::fromMap(const QVariantMap &map)
data.useLocalUidGid = map.value(DockerDeviceUseOutsideUser, HostOsInfo::isLinuxHost())
.toBool();
data.mounts = map.value(DockerDeviceMappedPaths).toStringList();
+ data.keepEntryPoint = map.value(DockerDeviceKeepEntryPoint).toBool();
d->setData(data);
}
@@ -590,6 +592,7 @@ QVariantMap DockerDevice::toMap() const
map.insert(DockerDeviceDataSizeKey, data.size);
map.insert(DockerDeviceUseOutsideUser, data.useLocalUidGid);
map.insert(DockerDeviceMappedPaths, data.mounts);
+ map.insert(DockerDeviceKeepEntryPoint, data.keepEntryPoint);
return map;
}
diff --git a/src/plugins/docker/dockerdevice.h b/src/plugins/docker/dockerdevice.h
index b1ddb18b418..7a9bb6e75a3 100644
--- a/src/plugins/docker/dockerdevice.h
+++ b/src/plugins/docker/dockerdevice.h
@@ -22,7 +22,8 @@ public:
bool operator==(const DockerDeviceData &other) const
{
return imageId == other.imageId && repo == other.repo && tag == other.tag
- && useLocalUidGid == other.useLocalUidGid && mounts == other.mounts;
+ && useLocalUidGid == other.useLocalUidGid && mounts == other.mounts
+ && keepEntryPoint == other.keepEntryPoint;
}
bool operator!=(const DockerDeviceData &other) const { return !(*this == other); }
@@ -45,6 +46,7 @@ public:
QString size;
bool useLocalUidGid = true;
QStringList mounts = {Core::DocumentManager::projectsDirectory().toString()};
+ bool keepEntryPoint = false;
};
class DockerDevice : public ProjectExplorer::IDevice
diff --git a/src/plugins/docker/dockerdevicewidget.cpp b/src/plugins/docker/dockerdevicewidget.cpp
index 10901009531..134ad2a0721 100644
--- a/src/plugins/docker/dockerdevicewidget.cpp
+++ b/src/plugins/docker/dockerdevicewidget.cpp
@@ -65,6 +65,18 @@ DockerDeviceWidget::DockerDeviceWidget(const IDevice::Ptr &device)
DockerApi::recheckDockerDaemon();
});
+ m_keepEntryPoint = new QCheckBox(Tr::tr("Don't modify entry point"));
+ m_keepEntryPoint->setToolTip(
+ Tr::tr("If checked, the entry point of the image will not be modified. Only use this if "
+ "the image starts into a shell."));
+ m_keepEntryPoint->setChecked(m_data.keepEntryPoint);
+ m_keepEntryPoint->setEnabled(true);
+
+ connect(m_keepEntryPoint, &QCheckBox::toggled, this, [this, dockerDevice](bool on) {
+ m_data.keepEntryPoint = on;
+ dockerDevice->setData(m_data);
+ });
+
m_runAsOutsideUser = new QCheckBox(Tr::tr("Run as outside user"));
m_runAsOutsideUser->setToolTip(Tr::tr("Uses user ID and group ID of the user running Qt Creator "
"in the docker container."));
@@ -164,6 +176,7 @@ DockerDeviceWidget::DockerDeviceWidget(const IDevice::Ptr &device)
idLabel, m_idLineEdit, br,
daemonStateLabel, m_daemonReset, m_daemonState, br,
m_runAsOutsideUser, br,
+ m_keepEntryPoint, br,
Column {
pathListLabel,
m_pathsListEdit,
diff --git a/src/plugins/docker/dockerdevicewidget.h b/src/plugins/docker/dockerdevicewidget.h
index 5371b840d85..4780aea7fc5 100644
--- a/src/plugins/docker/dockerdevicewidget.h
+++ b/src/plugins/docker/dockerdevicewidget.h
@@ -36,6 +36,7 @@ private:
QToolButton *m_daemonReset;
QLabel *m_daemonState;
QCheckBox *m_runAsOutsideUser;
+ QCheckBox *m_keepEntryPoint;
Utils::PathListEditor *m_pathsListEdit;
KitDetector m_kitItemDetector;