func createContainer()

in e2etestrunner/setuplocal.go [111:154]


func createContainer(
	ctx context.Context,
	cli *client.Client,
	args *Args,
	pubsubInfo *setuptf.PubsubInfo,
	logger *log.Logger,
) (container.CreateResponse, error) {
	env := []string{
		"PORT=" + args.Local.Port,
		"PROJECT_ID=" + args.ProjectID,
		"REQUEST_SUBSCRIPTION_NAME=" + pubsubInfo.RequestTopic.SubscriptionName,
		"RESPONSE_TOPIC_NAME=" + pubsubInfo.ResponseTopic.TopicName,
		"SUBSCRIPTION_MODE=" + string(setuptf.Pull),
	}
	mounts := []mount.Mount{}
	if args.Local.GoogleApplicationCredentials != "" {
		env = append(env, "GOOGLE_APPLICATION_CREDENTIALS="+args.Local.GoogleApplicationCredentials)
		mounts = append(mounts, mount.Mount{
			Type:     mount.TypeBind,
			Source:   args.Local.GoogleApplicationCredentials,
			Target:   args.Local.GoogleApplicationCredentials,
			ReadOnly: true,
		})

	}
	return cli.ContainerCreate(
		ctx,
		&container.Config{
			Image: args.Local.Image,
			Env:   env,
			ExposedPorts: nat.PortSet{
				nat.Port(args.Local.Port): struct{}{},
			},
			User: args.Local.ContainerUser,
		},
		&container.HostConfig{
			Mounts:      mounts,
			NetworkMode: container.NetworkMode(args.Local.Network),
		},
		nil,
		nil,
		"",
	)
}