3
3
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
4
4
5
5
import sys
6
+ import subprocess
6
7
from plumbum import cli
7
8
from .base import Docky , DockySub
8
9
from ..common .api import raise_error , logger
@@ -19,7 +20,10 @@ class DockyExec(DockySub):
19
20
service = cli .SwitchAttr (["service" ])
20
21
21
22
def _use_specific_user (self , service ):
22
- return not self .root and self .project .get_user (service )
23
+ user = self .project .get_user (service )
24
+ if self .root :
25
+ user = "root"
26
+ return user
23
27
24
28
def _get_cmd_line (self , optionnal_command_line ):
25
29
user = self ._use_specific_user (self .service )
@@ -81,7 +85,24 @@ class DockyOpen(DockyExec):
81
85
82
86
def _main (self , * optionnal_command_line ):
83
87
super ()._main (* optionnal_command_line )
84
- self ._exec ("dcpatched" , ["exec" , "-e" , "NOGOSU=True" , self .service ] + self .cmd )
88
+ # self._exec("dcpatched", ["exec", "-e", "NOGOSU=True", self.service] + self.cmd)
89
+
90
+ # Get Project Name
91
+ # Example: docky-odoo-brasil-14 odoo
92
+ project_name = self .project .name + "-" + self .project .service
93
+
94
+ # Get User
95
+ user = self ._use_specific_user (self .service )
96
+
97
+ # Get Container ID
98
+ command = "docker ps -aqf name=" + project_name
99
+ # Example of return value
100
+ # b'b5db9db21381\n'
101
+ # Option text=true return as string instead of bytes and strip remove break line
102
+ # TODO: Is there a better way to do it, for example with Plumbum?
103
+ container_id = subprocess .check_output (command , shell = True ,text = True ).strip ()
104
+
105
+ self ._exec ("docker" , ["exec" , "-u" , user , "-it" , container_id , "/bin/bash" ])
85
106
86
107
@Docky .subcommand ("system" )
87
108
class DockySystem (DockyExec ):
0 commit comments