mirror of
https://github.com/portainer/portainer.git
synced 2025-07-22 06:49:40 +02:00
* feat(compose): add docker-compose wrapper ce-187 * fix(compose): pick compose implementation upon startup * Add static compose build for linux * Fix wget * Fix platofrm specific docker-compose download * Keep amd64 architecture as download parameter * Add tmp folder for docker-compose * fix: line endings * add proxy server * logs * Proxy * Add lite transport for compose * Fix local deployment * refactor: pass proxyManager by ref * fix: string conversion * refactor: compose wrapper remove unused code * fix: tests * Add edge * Fix merge issue * refactor: remove unused code * Move server to proxy implementation * Cleanup wrapper and manager * feat: pass max supported compose syntax version with each endpoint * fix: pick compose syntax version * fix: store wrapper version in portainer * Get and show composeSyntaxMaxVersion at stack creation screen * Get and show composeSyntaxMaxVersion at stack editor screen * refactor: proxy server * Fix used tmp * Bump docker-compose to 1.28.0 * remove message for docker compose limitation * fix: markup typo * Rollback docker compose to 1.27.4 * * attempt to fix the windows build issue * * attempt to debug grunt issue * * use console log in grunt file * fix: try to fix windows build by removing indirect deps from go.mod * Remove tmp folder * Remove builder stage * feat(build/windows): add git for Docker Compose * feat(build/windows): add git for Docker Compose * feat(build/windows): add git for Docker Compose * feat(build/windows): add git for Docker Compose * feat(build/windows): add git for Docker Compose * feat(build/windows): add git for Docker Compose - fixed verbose output * refactor: renames * fix(stack): get endpoint by EndpointProvider * fix(stack): use margin to add space between line instead of using br tag Co-authored-by: Stéphane Busso <stephane.busso@gmail.com> Co-authored-by: Simon Meng <simon.meng@portainer.io> Co-authored-by: yi-portainer <yi.chen@portainer.io> Co-authored-by: Steven Kang <skan070@gmail.com>
75 lines
1.5 KiB
Go
75 lines
1.5 KiB
Go
// +build integration
|
|
|
|
package exec
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
portainer "github.com/portainer/portainer/api"
|
|
)
|
|
|
|
const composeFile = `version: "3.9"
|
|
services:
|
|
busybox:
|
|
image: "alpine:latest"
|
|
container_name: "compose_wrapper_test"`
|
|
const composedContainerName = "compose_wrapper_test"
|
|
|
|
func setup(t *testing.T) (*portainer.Stack, *portainer.Endpoint) {
|
|
dir := t.TempDir()
|
|
composeFileName := "compose_wrapper_test.yml"
|
|
f, _ := os.Create(filepath.Join(dir, composeFileName))
|
|
f.WriteString(composeFile)
|
|
|
|
stack := &portainer.Stack{
|
|
ProjectPath: dir,
|
|
EntryPoint: composeFileName,
|
|
Name: "project-name",
|
|
}
|
|
|
|
endpoint := &portainer.Endpoint{}
|
|
|
|
return stack, endpoint
|
|
}
|
|
|
|
func Test_UpAndDown(t *testing.T) {
|
|
|
|
stack, endpoint := setup(t)
|
|
|
|
w := NewComposeWrapper("", nil)
|
|
|
|
err := w.Up(stack, endpoint)
|
|
if err != nil {
|
|
t.Fatalf("Error calling docker-compose up: %s", err)
|
|
}
|
|
|
|
if containerExists(composedContainerName) == false {
|
|
t.Fatal("container should exist")
|
|
}
|
|
|
|
err = w.Down(stack, endpoint)
|
|
if err != nil {
|
|
t.Fatalf("Error calling docker-compose down: %s", err)
|
|
}
|
|
|
|
if containerExists(composedContainerName) {
|
|
t.Fatal("container should be removed")
|
|
}
|
|
}
|
|
|
|
func containerExists(contaierName string) bool {
|
|
cmd := exec.Command(osProgram("docker"), "ps", "-a", "-f", fmt.Sprintf("name=%s", contaierName))
|
|
|
|
out, err := cmd.Output()
|
|
if err != nil {
|
|
log.Fatalf("failed to list containers: %s", err)
|
|
}
|
|
|
|
return strings.Contains(string(out), contaierName)
|
|
}
|