diff --git a/resource_docker_container.go b/resource_docker_container.go index a084ad43..543dc930 100644 --- a/resource_docker_container.go +++ b/resource_docker_container.go @@ -376,6 +376,14 @@ func resourceDockerContainer() *schema.Resource { ForceNew: true, }, + "network_alias": &schema.Schema{ + Type: schema.TypeSet, + Optional: true, + ForceNew: true, + Elem: &schema.Schema{Type: schema.TypeString}, + Set: schema.HashString, + }, + "network_mode": &schema.Schema{ Type: schema.TypeString, Optional: true, diff --git a/resource_docker_container_funcs.go b/resource_docker_container_funcs.go index ba7d54aa..4a494c5b 100644 --- a/resource_docker_container_funcs.go +++ b/resource_docker_container_funcs.go @@ -188,7 +188,14 @@ func resourceDockerContainerCreate(d *schema.ResourceData, meta interface{}) err d.SetId(retContainer.ID) if v, ok := d.GetOk("networks"); ok { - connectionOpts := dc.NetworkConnectionOptions{Container: retContainer.ID} + var connectionOpts dc.NetworkConnectionOptions + if v, ok := d.GetOk("network_alias"); ok { + endpointConfig := &dc.EndpointConfig{} + endpointConfig.Aliases = stringSetToStringSlice(v.(*schema.Set)) + connectionOpts = dc.NetworkConnectionOptions{Container: retContainer.ID, EndpointConfig: endpointConfig} + } else { + connectionOpts = dc.NetworkConnectionOptions{Container: retContainer.ID} + } for _, rawNetwork := range v.(*schema.Set).List() { network := rawNetwork.(string) diff --git a/resource_docker_container_test.go b/resource_docker_container_test.go index e9c3bb95..dcc6affa 100644 --- a/resource_docker_container_test.go +++ b/resource_docker_container_test.go @@ -203,6 +203,10 @@ func TestAccDockerContainer_customized(t *testing.T) { return fmt.Errorf("Container has incorrect extra host string: %q", c.HostConfig.ExtraHosts[1]) } + if _, ok := c.NetworkSettings.Networks["test"]; !ok { + return fmt.Errorf("Container is not connected to the right user defined network: test") + } + return nil } @@ -370,6 +374,9 @@ resource "docker_container" "foo" { } network_mode = "bridge" + networks = ["${docker_network.test_network.name}"] + network_alias = ["tftest"] + host { host = "testhost" ip = "10.0.1.0" @@ -380,6 +387,10 @@ resource "docker_container" "foo" { ip = "10.0.2.0" } } + +resource "docker_network" "test_network" { + name = "test" +} ` const testAccDockerContainerUploadConfig = `