diff options
Diffstat (limited to 'src/plugins/docker')
-rw-r--r-- | src/plugins/docker/dockerdevice.cpp | 7 | ||||
-rw-r--r-- | src/plugins/docker/dockerdevice.h | 4 | ||||
-rw-r--r-- | src/plugins/docker/dockerdevicewidget.cpp | 13 | ||||
-rw-r--r-- | src/plugins/docker/dockerdevicewidget.h | 1 |
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; |