Skip to content

Commit dd7f30c

Browse files
authored
fix: respect image.location uri for containers (#5555)
Addresses: #5501 (comment) By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the Apache 2.0 License.
1 parent 98bacee commit dd7f30c

File tree

4 files changed

+38
-36
lines changed

4 files changed

+38
-36
lines changed

e2e/sidecars/sidecars_suite_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ var docker *client.Docker
2222
var appName string
2323
var envName string
2424
var svcName string
25-
var sidecarImageURI string
26-
var sidecarRepoName string
25+
var mainRepoName string
2726

2827
// The Sidecars suite runs creates a new service with sidecar containers.
2928
func TestSidecars(t *testing.T) {
@@ -40,12 +39,12 @@ var _ = BeforeSuite(func() {
4039
appName = fmt.Sprintf("e2e-sidecars-%d", time.Now().Unix())
4140
envName = "test"
4241
svcName = "hello"
43-
sidecarRepoName = fmt.Sprintf("e2e-sidecars-nginx-%d", time.Now().Unix())
42+
mainRepoName = fmt.Sprintf("e2e-sidecars-main-%d", time.Now().Unix())
4443
})
4544

4645
var _ = AfterSuite(func() {
4746
_, appDeleteErr := cli.AppDelete()
48-
repoDeleteErr := command.Run("aws", []string{"ecr", "delete-repository", "--repository-name", sidecarRepoName, "--force"})
47+
repoDeleteErr := command.Run("aws", []string{"ecr", "delete-repository", "--repository-name", mainRepoName, "--force"})
4948
Expect(appDeleteErr).NotTo(HaveOccurred())
5049
Expect(repoDeleteErr).NotTo(HaveOccurred())
5150
})

e2e/sidecars/sidecars_test.go

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ type: Load Balanced Web Service
2727
2828
image:
2929
# Path to your service's Dockerfile.
30-
build: hello/Dockerfile
30+
location: %s
3131
# Port exposed through your container to route traffic to it.
3232
port: 3000
3333
depends_on:
@@ -52,9 +52,10 @@ count: 1
5252
sidecars:
5353
nginx:
5454
port: 80
55-
image: %s # Image URL for sidecar container.
55+
image:
56+
build: nginx/Dockerfile
5657
variables:
57-
NGINX_PORT: %s
58+
NGINX_PORT: 80
5859
env_file: ./magic.env
5960
logging:
6061
env_file: ./magic.env
@@ -65,9 +66,30 @@ logging:
6566
log_stream_prefix: copilot/
6667
`
6768

68-
const nginxPort = "80"
69+
var mainImageURI string
6970

7071
var _ = Describe("sidecars flow", func() {
72+
Context("build and push main image to ECR repo", func() {
73+
var uri string
74+
var err error
75+
It("create new ECR repo for main container", func() {
76+
uri, err = aws.CreateECRRepo(mainRepoName)
77+
Expect(err).NotTo(HaveOccurred(), "create ECR repo for main container")
78+
mainImageURI = fmt.Sprintf("%s:mytag", uri)
79+
})
80+
It("push main container image", func() {
81+
var password string
82+
password, err = aws.ECRLoginPassword()
83+
Expect(err).NotTo(HaveOccurred(), "get ecr login password")
84+
err = docker.Login(uri, password)
85+
Expect(err).NotTo(HaveOccurred(), "docker login")
86+
err = docker.Build(mainImageURI, "./hello")
87+
Expect(err).NotTo(HaveOccurred(), "build main container image")
88+
err = docker.Push(mainImageURI)
89+
Expect(err).NotTo(HaveOccurred(), "push to ECR repo")
90+
})
91+
})
92+
7193
Context("when creating a new app", Ordered, func() {
7294
var (
7395
initErr error
@@ -167,33 +189,11 @@ var _ = Describe("sidecars flow", func() {
167189
})
168190
})
169191

170-
Context("build and push sidecar image to ECR repo", func() {
171-
var uri string
172-
var err error
173-
tag := "vortexstreet"
174-
It("create new ECR repo for sidecar", func() {
175-
uri, err = aws.CreateECRRepo(sidecarRepoName)
176-
Expect(err).NotTo(HaveOccurred(), "create ECR repo for sidecar")
177-
sidecarImageURI = fmt.Sprintf("%s:%s", uri, tag)
178-
})
179-
It("push sidecar image", func() {
180-
var password string
181-
password, err = aws.ECRLoginPassword()
182-
Expect(err).NotTo(HaveOccurred(), "get ecr login password")
183-
err = docker.Login(uri, password)
184-
Expect(err).NotTo(HaveOccurred(), "docker login")
185-
err = docker.Build(sidecarImageURI, "./nginx")
186-
Expect(err).NotTo(HaveOccurred(), "build sidecar image")
187-
err = docker.Push(sidecarImageURI)
188-
Expect(err).NotTo(HaveOccurred(), "push to ECR repo")
189-
})
190-
})
191-
192192
Context("write local manifest and addon files", func() {
193193
var newManifest string
194194
It("overwrite existing manifest", func() {
195195
logGroupName := fmt.Sprintf("%s-test-%s", appName, svcName)
196-
newManifest = fmt.Sprintf(manifest, sidecarImageURI, nginxPort, logGroupName)
196+
newManifest = fmt.Sprintf(manifest, mainImageURI, logGroupName)
197197
err := os.WriteFile("./copilot/hello/manifest.yml", []byte(newManifest), 0644)
198198
Expect(err).NotTo(HaveOccurred(), "overwrite manifest")
199199
})

internal/pkg/deploy/cloudformation/stack/transformers.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,10 @@ func convertSidecars(s map[string]*manifest.SidecarConfig, exposedPorts map[stri
9595
sort.Strings(keys)
9696
for _, name := range keys {
9797
config := s[name]
98-
imageURI := rc.PushedImages[name].URI()
98+
var imageURI string
99+
if image, ok := rc.PushedImages[name]; ok {
100+
imageURI = image.URI()
101+
}
99102
if uri, hasLocation := config.ImageURI(); hasLocation {
100103
imageURI = uri
101104
}

internal/pkg/deploy/cloudformation/stack/workload.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ func (w *wkld) Parameters() ([]*cloudformation.Parameter, error) {
173173
if w.image != nil {
174174
img = w.image.GetLocation()
175175
}
176-
if w.rc.PushedImages != nil {
177-
img = w.rc.PushedImages[w.name].URI()
176+
if image, ok := w.rc.PushedImages[w.name]; ok {
177+
img = image.URI()
178178
}
179179
return []*cloudformation.Parameter{
180180
{
@@ -416,8 +416,8 @@ func (w *appRunnerWkld) Parameters() ([]*cloudformation.Parameter, error) {
416416
if w.image != nil {
417417
img = w.image.GetLocation()
418418
}
419-
if w.rc.PushedImages != nil {
420-
img = w.rc.PushedImages[w.name].URI()
419+
if image, ok := w.rc.PushedImages[w.name]; ok {
420+
img = image.URI()
421421
}
422422

423423
imageRepositoryType, err := apprunner.DetermineImageRepositoryType(img)

0 commit comments

Comments
 (0)