fix: reference extracted Procfile
Rather than attempting to always extract the Procfile, reference the one that was extracted by the last deploy. This fixes issues where 'docker container cp' may fail intermittently for lord knows what reason. Closes #4083
This commit is contained in:
@@ -1511,7 +1511,7 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
|
|
||||||
- Description: Removes the extracted Procfile
|
- Description: Removes the extracted Procfile
|
||||||
- Invoked by: `internally`
|
- Invoked by: `internally`
|
||||||
- Arguments: `$APP $PROCFILE_PATH`
|
- Arguments: `$APP`
|
||||||
- Example:
|
- Example:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
|||||||
@@ -19,11 +19,7 @@ func canScaleApp(appName string) bool {
|
|||||||
return !common.FileExists(getScalefileExtractedPath(appName))
|
return !common.FileExists(getScalefileExtractedPath(appName))
|
||||||
}
|
}
|
||||||
|
|
||||||
func extractProcfile(appName, image string, procfilePath string) error {
|
func extractProcfile(appName, image string) error {
|
||||||
if err := removeProcfile(appName); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
destination := getProcfilePath(appName)
|
destination := getProcfilePath(appName)
|
||||||
common.CopyFromImage(appName, image, "Procfile", destination)
|
common.CopyFromImage(appName, image, "Procfile", destination)
|
||||||
if !common.FileExists(destination) {
|
if !common.FileExists(destination) {
|
||||||
|
|||||||
@@ -62,8 +62,7 @@ func main() {
|
|||||||
err = ps.TriggerProcfileGetCommand(appName, processType, port)
|
err = ps.TriggerProcfileGetCommand(appName, processType, port)
|
||||||
case "procfile-remove":
|
case "procfile-remove":
|
||||||
appName := flag.Arg(0)
|
appName := flag.Arg(0)
|
||||||
procfilePath := flag.Arg(1)
|
err = ps.TriggerProcfileRemove(appName)
|
||||||
err = ps.TriggerProcfileRemove(appName, procfilePath)
|
|
||||||
case "report":
|
case "report":
|
||||||
appName := flag.Arg(0)
|
appName := flag.Arg(0)
|
||||||
err = ps.ReportSingleApp(appName, "")
|
err = ps.ReportSingleApp(appName, "")
|
||||||
|
|||||||
@@ -144,11 +144,14 @@ func CommandScale(appName string, skipDeploy bool, processTuples []string) error
|
|||||||
|
|
||||||
procfilePath := getProcfilePath(appName)
|
procfilePath := getProcfilePath(appName)
|
||||||
if !common.FileExists(procfilePath) {
|
if !common.FileExists(procfilePath) {
|
||||||
image := common.GetAppImageRepo(appName)
|
extract := func() error {
|
||||||
common.SuppressOutput(func() error {
|
image := common.GetDeployingAppImageName(appName, "", "")
|
||||||
extractProcfile(appName, image, procfilePath)
|
return extractProcfile(appName, image)
|
||||||
return nil
|
}
|
||||||
})
|
|
||||||
|
if err := common.SuppressOutput(extract); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !hasScaleFile(appName) {
|
if !hasScaleFile(appName) {
|
||||||
|
|||||||
@@ -17,13 +17,9 @@ func TriggerAppRestart(appName string) error {
|
|||||||
return Restart(appName)
|
return Restart(appName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TriggerCorePostDeploy removes extracted procfiles
|
// TriggerCorePostDeploy sets a property to
|
||||||
// and sets a property to allow the app to be restored on boot
|
// allow the app to be restored on boot
|
||||||
func TriggerCorePostDeploy(appName string) error {
|
func TriggerCorePostDeploy(appName string) error {
|
||||||
if err := removeProcfile(appName); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
entries := map[string]string{
|
entries := map[string]string{
|
||||||
"DOKKU_APP_RESTORE": "1",
|
"DOKKU_APP_RESTORE": "1",
|
||||||
}
|
}
|
||||||
@@ -148,11 +144,12 @@ func TriggerPostStop(appName string) error {
|
|||||||
|
|
||||||
// TriggerPreDeploy ensures an app has an up to date scale file
|
// TriggerPreDeploy ensures an app has an up to date scale file
|
||||||
func TriggerPreDeploy(appName string, imageTag string) error {
|
func TriggerPreDeploy(appName string, imageTag string) error {
|
||||||
image := common.GetAppImageRepo(appName)
|
image := common.GetDeployingAppImageName(appName, imageTag, "")
|
||||||
removeProcfile(appName)
|
if err := removeProcfile(appName); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
procfilePath := getProcfilePath(appName)
|
if err := extractProcfile(appName, image); err != nil {
|
||||||
if err := extractProcfile(appName, image, procfilePath); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,27 +171,23 @@ func TriggerProcfileExtract(appName string, image string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
procfilePath := getProcfilePath(appName)
|
if err := removeProcfile(appName); err != nil {
|
||||||
|
return err
|
||||||
if common.FileExists(procfilePath) {
|
|
||||||
if err := common.PlugnTrigger("procfile-remove", []string{appName, procfilePath}...); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return extractProcfile(appName, image, procfilePath)
|
return extractProcfile(appName, image)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TriggerProcfileGetCommand fetches a command from the procfile
|
// TriggerProcfileGetCommand fetches a command from the procfile
|
||||||
func TriggerProcfileGetCommand(appName string, processType string, port int) error {
|
func TriggerProcfileGetCommand(appName string, processType string, port int) error {
|
||||||
procfilePath := getProcfilePath(appName)
|
procfilePath := getProcfilePath(appName)
|
||||||
if !common.FileExists(procfilePath) {
|
if !common.FileExists(procfilePath) {
|
||||||
image := common.GetDeployingAppImageName(appName, "", "")
|
extract := func() error {
|
||||||
err := common.SuppressOutput(func() error {
|
image := common.GetDeployingAppImageName(appName, "", "")
|
||||||
return common.PlugnTrigger("procfile-extract", []string{appName, image}...)
|
return extractProcfile(appName, image)
|
||||||
})
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err := common.SuppressOutput(extract); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -211,15 +204,6 @@ func TriggerProcfileGetCommand(appName string, processType string, port int) err
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TriggerProcfileRemove removes the procfile if it exists
|
// TriggerProcfileRemove removes the procfile if it exists
|
||||||
func TriggerProcfileRemove(appName string, procfilePath string) error {
|
func TriggerProcfileRemove(appName string) error {
|
||||||
if procfilePath == "" {
|
return removeProcfile(appName)
|
||||||
procfilePath = getProcfilePath(appName)
|
|
||||||
}
|
|
||||||
|
|
||||||
if !common.FileExists(procfilePath) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
os.Remove(procfilePath)
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user