Add support for Bitnami container images with Docker Compose
Closes gh-35759
This commit is contained in:
committed by
Scott Frederick
parent
533f6c3bb1
commit
09a6ae51cc
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.cassandra;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.cassandra.CassandraConnectionDetails;
|
||||
import org.springframework.boot.autoconfigure.cassandra.CassandraConnectionDetails.Node;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration test for {@link CassandraDockerComposeConnectionDetailsFactory}.
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class CassandraBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests
|
||||
extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
CassandraBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("cassandra-bitnami-compose.yaml", BitnamiImageNames.cassandra());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetails() {
|
||||
CassandraConnectionDetails connectionDetails = run(CassandraConnectionDetails.class);
|
||||
List<Node> contactPoints = connectionDetails.getContactPoints();
|
||||
assertThat(contactPoints).hasSize(1);
|
||||
Node node = contactPoints.get(0);
|
||||
assertThat(node.host()).isNotNull();
|
||||
assertThat(node.port()).isGreaterThan(0);
|
||||
assertThat(connectionDetails.getUsername()).isNull();
|
||||
assertThat(connectionDetails.getPassword()).isNull();
|
||||
assertThat(connectionDetails.getLocalDatacenter()).isEqualTo("testdc1");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2023 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -48,7 +48,7 @@ class CassandraDockerComposeConnectionDetailsFactoryIntegrationTests extends Abs
|
||||
assertThat(node.port()).isGreaterThan(0);
|
||||
assertThat(connectionDetails.getUsername()).isNull();
|
||||
assertThat(connectionDetails.getPassword()).isNull();
|
||||
assertThat(connectionDetails.getLocalDatacenter()).isEqualTo("dc1");
|
||||
assertThat(connectionDetails.getLocalDatacenter()).isEqualTo("testdc1");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2023 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -36,10 +36,16 @@ class CassandraEnvironmentTests {
|
||||
assertThat(environment.getDatacenter()).isEqualTo("datacenter1");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getDatacenterWhenDcIsSet() {
|
||||
CassandraEnvironment environment = new CassandraEnvironment(Map.of("CASSANDRA_DC", "testdc1"));
|
||||
assertThat(environment.getDatacenter()).isEqualTo("testdc1");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getDatacenterWhenDatacenterIsSet() {
|
||||
CassandraEnvironment environment = new CassandraEnvironment(Map.of("CASSANDRA_DC", "dc1"));
|
||||
assertThat(environment.getDatacenter()).isEqualTo("dc1");
|
||||
CassandraEnvironment environment = new CassandraEnvironment(Map.of("CASSANDRA_DATACENTER", "testdc1"));
|
||||
assertThat(environment.getDatacenter()).isEqualTo("testdc1");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.elasticsearch;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchConnectionDetails;
|
||||
import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchConnectionDetails.Node;
|
||||
import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchConnectionDetails.Node.Protocol;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link ElasticsearchDockerComposeConnectionDetailsFactory}.
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class ElasticsearchBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests
|
||||
extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
ElasticsearchBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("elasticsearch-bitnami-compose.yaml", BitnamiImageNames.elasticsearch());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetails() {
|
||||
ElasticsearchConnectionDetails connectionDetails = run(ElasticsearchConnectionDetails.class);
|
||||
assertThat(connectionDetails.getUsername()).isEqualTo("elastic");
|
||||
assertThat(connectionDetails.getPassword()).isEqualTo("secret");
|
||||
assertThat(connectionDetails.getPathPrefix()).isNull();
|
||||
assertThat(connectionDetails.getNodes()).hasSize(1);
|
||||
Node node = connectionDetails.getNodes().get(0);
|
||||
assertThat(node.hostname()).isNotNull();
|
||||
assertThat(node.port()).isGreaterThan(0);
|
||||
assertThat(node.protocol()).isEqualTo(Protocol.HTTP);
|
||||
assertThat(node.username()).isEqualTo("elastic");
|
||||
assertThat(node.password()).isEqualTo("secret");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.mariadb;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link MariaDbJdbcDockerComposeConnectionDetailsFactory}
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class MariaDbBitnamiJdbcDockerComposeConnectionDetailsFactoryIntegrationTests
|
||||
extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
MariaDbBitnamiJdbcDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("mariadb-bitnami-compose.yaml", BitnamiImageNames.mariadb());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetails() {
|
||||
JdbcConnectionDetails connectionDetails = run(JdbcConnectionDetails.class);
|
||||
assertThat(connectionDetails.getUsername()).isEqualTo("myuser");
|
||||
assertThat(connectionDetails.getPassword()).isEqualTo("secret");
|
||||
assertThat(connectionDetails.getJdbcUrl()).startsWith("jdbc:mariadb://").endsWith("/mydatabase");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.mariadb;
|
||||
|
||||
import io.r2dbc.spi.ConnectionFactoryOptions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.r2dbc.R2dbcConnectionDetails;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link MariaDbR2dbcDockerComposeConnectionDetailsFactory}
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class MariaDbBitnamiR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests
|
||||
extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
MariaDbBitnamiR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("mariadb-bitnami-compose.yaml", BitnamiImageNames.mariadb());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetails() {
|
||||
R2dbcConnectionDetails connectionDetails = run(R2dbcConnectionDetails.class);
|
||||
ConnectionFactoryOptions connectionFactoryOptions = connectionDetails.getConnectionFactoryOptions();
|
||||
assertThat(connectionFactoryOptions.toString()).contains("database=mydatabase", "driver=mariadb",
|
||||
"password=REDACTED", "user=myuser");
|
||||
assertThat(connectionFactoryOptions.getRequiredValue(ConnectionFactoryOptions.PASSWORD)).isEqualTo("secret");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2023 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -31,6 +31,7 @@ import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
* @author Andy Wilkinson
|
||||
* @author Phillip Webb
|
||||
* @author Jinseong Hwang
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class MariaDbEnvironmentTests {
|
||||
|
||||
@@ -130,6 +131,13 @@ class MariaDbEnvironmentTests {
|
||||
assertThat(environment.getPassword()).isEqualTo("secret");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPasswordWhenHasNoPasswordAndAllowEmptyPassword() {
|
||||
MariaDbEnvironment environment = new MariaDbEnvironment(
|
||||
Map.of("ALLOW_EMPTY_PASSWORD", "true", "MARIADB_DATABASE", "db"));
|
||||
assertThat(environment.getPassword()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPasswordWhenHasNoPasswordAndMariadbAllowEmptyPassword() {
|
||||
MariaDbEnvironment environment = new MariaDbEnvironment(
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.mongo;
|
||||
|
||||
import com.mongodb.ConnectionString;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.mongo.MongoConnectionDetails;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link MongoDockerComposeConnectionDetailsFactory}.
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class MongoBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
MongoBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("mongo-bitnami-compose.yaml", BitnamiImageNames.mongo());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetails() {
|
||||
MongoConnectionDetails connectionDetails = run(MongoConnectionDetails.class);
|
||||
ConnectionString connectionString = connectionDetails.getConnectionString();
|
||||
assertThat(connectionString.getCredential().getUserName()).isEqualTo("root");
|
||||
assertThat(connectionString.getCredential().getPassword()).isEqualTo("secret".toCharArray());
|
||||
assertThat(connectionString.getCredential().getSource()).isEqualTo("admin");
|
||||
assertThat(connectionString.getDatabase()).isEqualTo("test");
|
||||
assertThat(connectionDetails.getGridFs()).isNull();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.mysql;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link MySqlJdbcDockerComposeConnectionDetailsFactory}
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class MySqlBitnamiJdbcDockerComposeConnectionDetailsFactoryIntegrationTests
|
||||
extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
MySqlBitnamiJdbcDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("mysql-bitnami-compose.yaml", BitnamiImageNames.mysql());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetails() {
|
||||
JdbcConnectionDetails connectionDetails = run(JdbcConnectionDetails.class);
|
||||
assertThat(connectionDetails.getUsername()).isEqualTo("myuser");
|
||||
assertThat(connectionDetails.getPassword()).isEqualTo("secret");
|
||||
assertThat(connectionDetails.getJdbcUrl()).startsWith("jdbc:mysql://").endsWith("/mydatabase");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.mysql;
|
||||
|
||||
import io.r2dbc.spi.ConnectionFactoryOptions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.r2dbc.R2dbcConnectionDetails;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link MySqlR2dbcDockerComposeConnectionDetailsFactory}
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class MySqlBitnamiR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests
|
||||
extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
MySqlBitnamiR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("mysql-bitnami-compose.yaml", BitnamiImageNames.mysql());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetails() {
|
||||
R2dbcConnectionDetails connectionDetails = run(R2dbcConnectionDetails.class);
|
||||
ConnectionFactoryOptions connectionFactoryOptions = connectionDetails.getConnectionFactoryOptions();
|
||||
assertThat(connectionFactoryOptions.toString()).contains("database=mydatabase", "driver=mysql",
|
||||
"password=REDACTED", "user=myuser");
|
||||
assertThat(connectionFactoryOptions.getRequiredValue(ConnectionFactoryOptions.PASSWORD)).isEqualTo("secret");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2023 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -31,6 +31,7 @@ import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
* @author Andy Wilkinson
|
||||
* @author Phillip Webb
|
||||
* @author Jinseong Hwang
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class MySqlEnvironmentTests {
|
||||
|
||||
@@ -86,6 +87,13 @@ class MySqlEnvironmentTests {
|
||||
assertThat(environment.getPassword()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPasswordWhenHasNoPasswordAndAllowEmptyPassword() {
|
||||
MySqlEnvironment environment = new MySqlEnvironment(
|
||||
Map.of("ALLOW_EMPTY_PASSWORD", "true", "MYSQL_DATABASE", "db"));
|
||||
assertThat(environment.getPassword()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void getDatabaseWhenHasMysqlDatabase() {
|
||||
MySqlEnvironment environment = new MySqlEnvironment(
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright 2012-2023 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.neo4j;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.neo4j.driver.AuthTokens;
|
||||
import org.neo4j.driver.Driver;
|
||||
import org.neo4j.driver.GraphDatabase;
|
||||
|
||||
import org.springframework.boot.autoconfigure.neo4j.Neo4jConnectionDetails;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatNoException;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link Neo4jDockerComposeConnectionDetailsFactory}.
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class Neo4jBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
Neo4jBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("neo4j-bitnami-compose.yaml", BitnamiImageNames.neo4j());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetailsThatCanAccessNeo4j() {
|
||||
Neo4jConnectionDetails connectionDetails = run(Neo4jConnectionDetails.class);
|
||||
assertThat(connectionDetails.getAuthToken()).isEqualTo(AuthTokens.basic("neo4j", "bitnami2"));
|
||||
try (Driver driver = GraphDatabase.driver(connectionDetails.getUri(), connectionDetails.getAuthToken())) {
|
||||
assertThatNoException().isThrownBy(driver::verifyConnectivity);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2023 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -29,11 +29,12 @@ import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
* Tests for {@link Neo4jEnvironment}.
|
||||
*
|
||||
* @author Andy Wilkinson
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class Neo4jEnvironmentTests {
|
||||
|
||||
@Test
|
||||
void whenNeo4jAuthIsNullThenAuthTokenIsNull() {
|
||||
void whenNeo4jAuthAndPasswordAreNullThenAuthTokenIsNull() {
|
||||
Neo4jEnvironment environment = new Neo4jEnvironment(Collections.emptyMap());
|
||||
assertThat(environment.getAuthToken()).isNull();
|
||||
}
|
||||
@@ -56,4 +57,10 @@ class Neo4jEnvironmentTests {
|
||||
.isThrownBy(() -> new Neo4jEnvironment(Map.of("NEO4J_AUTH", "graphdb/custom-password")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void whenNeo4jPasswordIsProvidedThenAuthTokenIsBasic() {
|
||||
Neo4jEnvironment environment = new Neo4jEnvironment(Map.of("NEO4J_PASSWORD", "custom-password"));
|
||||
assertThat(environment.getAuthToken()).isEqualTo(AuthTokens.basic("neo4j", "custom-password"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.postgres;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.jdbc.JdbcConnectionDetails;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link PostgresJdbcDockerComposeConnectionDetailsFactory}.
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class PostgresBitnamiJdbcDockerComposeConnectionDetailsFactoryIntegrationTests
|
||||
extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
PostgresBitnamiJdbcDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("postgres-bitnami-compose.yaml", BitnamiImageNames.postgresql());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetails() {
|
||||
JdbcConnectionDetails connectionDetails = run(JdbcConnectionDetails.class);
|
||||
assertThat(connectionDetails.getUsername()).isEqualTo("myuser");
|
||||
assertThat(connectionDetails.getPassword()).isEqualTo("secret");
|
||||
assertThat(connectionDetails.getJdbcUrl()).startsWith("jdbc:postgresql://").endsWith("/mydatabase");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.postgres;
|
||||
|
||||
import io.r2dbc.spi.ConnectionFactoryOptions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.r2dbc.R2dbcConnectionDetails;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link PostgresR2dbcDockerComposeConnectionDetailsFactory}.
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class PostgresBitnamiR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests
|
||||
extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
PostgresBitnamiR2dbcDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("postgres-bitnami-compose.yaml", BitnamiImageNames.postgresql());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetails() {
|
||||
R2dbcConnectionDetails connectionDetails = run(R2dbcConnectionDetails.class);
|
||||
ConnectionFactoryOptions connectionFactoryOptions = connectionDetails.getConnectionFactoryOptions();
|
||||
assertThat(connectionFactoryOptions.toString()).contains("database=mydatabase", "driver=postgresql",
|
||||
"password=REDACTED", "user=myuser");
|
||||
assertThat(connectionFactoryOptions.getRequiredValue(ConnectionFactoryOptions.PASSWORD)).isEqualTo("secret");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2023 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -30,13 +30,14 @@ import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
* @author Moritz Halbritter
|
||||
* @author Andy Wilkinson
|
||||
* @author Phillip Webb
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class PostgresEnvironmentTests {
|
||||
|
||||
@Test
|
||||
void createWhenNoPostgresPasswordThrowsException() {
|
||||
assertThatIllegalStateException().isThrownBy(() -> new PostgresEnvironment(Collections.emptyMap()))
|
||||
.withMessage("No POSTGRES_PASSWORD defined");
|
||||
.withMessage("PostgreSQL password must be provided");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -45,6 +46,12 @@ class PostgresEnvironmentTests {
|
||||
assertThat(environment.getUsername()).isEqualTo("postgres");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getUsernameWhenNoPostgresqlUser() {
|
||||
PostgresEnvironment environment = new PostgresEnvironment(Map.of("POSTGRESQL_PASSWORD", "secret"));
|
||||
assertThat(environment.getUsername()).isEqualTo("postgres");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getUsernameWhenHasPostgresUser() {
|
||||
PostgresEnvironment environment = new PostgresEnvironment(
|
||||
@@ -52,18 +59,37 @@ class PostgresEnvironmentTests {
|
||||
assertThat(environment.getUsername()).isEqualTo("me");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getUsernameWhenHasPostgresqlUser() {
|
||||
PostgresEnvironment environment = new PostgresEnvironment(
|
||||
Map.of("POSTGRESQL_USER", "me", "POSTGRESQL_PASSWORD", "secret"));
|
||||
assertThat(environment.getUsername()).isEqualTo("me");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPasswordWhenHasPostgresPassword() {
|
||||
PostgresEnvironment environment = new PostgresEnvironment(Map.of("POSTGRES_PASSWORD", "secret"));
|
||||
assertThat(environment.getPassword()).isEqualTo("secret");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPasswordWhenHasPostgresqlPassword() {
|
||||
PostgresEnvironment environment = new PostgresEnvironment(Map.of("POSTGRESQL_PASSWORD", "secret"));
|
||||
assertThat(environment.getPassword()).isEqualTo("secret");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getDatabaseWhenNoPostgresDbOrPostgresUser() {
|
||||
PostgresEnvironment environment = new PostgresEnvironment(Map.of("POSTGRES_PASSWORD", "secret"));
|
||||
assertThat(environment.getDatabase()).isEqualTo("postgres");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getDatabaseWhenNoPostgresqlDbOrPostgresUser() {
|
||||
PostgresEnvironment environment = new PostgresEnvironment(Map.of("POSTGRESQL_PASSWORD", "secret"));
|
||||
assertThat(environment.getDatabase()).isEqualTo("postgres");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getDatabaseWhenNoPostgresDbAndPostgresUser() {
|
||||
PostgresEnvironment environment = new PostgresEnvironment(
|
||||
@@ -71,6 +97,13 @@ class PostgresEnvironmentTests {
|
||||
assertThat(environment.getDatabase()).isEqualTo("me");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getDatabaseWhenNoPostgresqlDbAndPostgresUser() {
|
||||
PostgresEnvironment environment = new PostgresEnvironment(
|
||||
Map.of("POSTGRESQL_USER", "me", "POSTGRESQL_PASSWORD", "secret"));
|
||||
assertThat(environment.getDatabase()).isEqualTo("me");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getDatabaseWhenHasPostgresDb() {
|
||||
PostgresEnvironment environment = new PostgresEnvironment(
|
||||
@@ -78,4 +111,11 @@ class PostgresEnvironmentTests {
|
||||
assertThat(environment.getDatabase()).isEqualTo("db");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getDatabaseWhenHasPostgresqlDb() {
|
||||
PostgresEnvironment environment = new PostgresEnvironment(
|
||||
Map.of("POSTGRESQL_DB", "db", "POSTGRESQL_PASSWORD", "secret"));
|
||||
assertThat(environment.getDatabase()).isEqualTo("db");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.rabbit;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.amqp.RabbitConnectionDetails;
|
||||
import org.springframework.boot.autoconfigure.amqp.RabbitConnectionDetails.Address;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link RabbitDockerComposeConnectionDetailsFactory}.
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class RabbitBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
RabbitBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("rabbit-bitnami-compose.yaml", BitnamiImageNames.rabbit());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetails() {
|
||||
RabbitConnectionDetails connectionDetails = run(RabbitConnectionDetails.class);
|
||||
assertThat(connectionDetails.getUsername()).isEqualTo("myuser");
|
||||
assertThat(connectionDetails.getPassword()).isEqualTo("secret");
|
||||
assertThat(connectionDetails.getVirtualHost()).isEqualTo("/");
|
||||
assertThat(connectionDetails.getAddresses()).hasSize(1);
|
||||
Address address = connectionDetails.getFirstAddress();
|
||||
assertThat(address.host()).isNotNull();
|
||||
assertThat(address.port()).isGreaterThan(0);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2023 the original author or authors.
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -29,6 +29,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
* @author Moritz Halbritter
|
||||
* @author Andy Wilkinson
|
||||
* @author Phillip Webb
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class RabbitEnvironmentTests {
|
||||
|
||||
@@ -44,6 +45,12 @@ class RabbitEnvironmentTests {
|
||||
assertThat(environment.getUsername()).isEqualTo("me");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getUsernameWhenHasRabbitmqUsername() {
|
||||
RabbitEnvironment environment = new RabbitEnvironment(Map.of("RABBITMQ_USERNAME", "me"));
|
||||
assertThat(environment.getUsername()).isEqualTo("me");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getUsernameWhenNoRabbitmqDefaultPass() {
|
||||
RabbitEnvironment environment = new RabbitEnvironment(Collections.emptyMap());
|
||||
@@ -56,4 +63,10 @@ class RabbitEnvironmentTests {
|
||||
assertThat(environment.getPassword()).isEqualTo("secret");
|
||||
}
|
||||
|
||||
@Test
|
||||
void getUsernameWhenHasRabbitmqPassword() {
|
||||
RabbitEnvironment environment = new RabbitEnvironment(Map.of("RABBITMQ_PASSWORD", "secret"));
|
||||
assertThat(environment.getPassword()).isEqualTo("secret");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.docker.compose.service.connection.redis;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.data.redis.RedisConnectionDetails;
|
||||
import org.springframework.boot.autoconfigure.data.redis.RedisConnectionDetails.Standalone;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests;
|
||||
import org.springframework.boot.testsupport.testcontainers.BitnamiImageNames;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration test for {@link RedisDockerComposeConnectionDetailsFactory}.
|
||||
*
|
||||
* @author Scott Frederick
|
||||
*/
|
||||
class RedisBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests {
|
||||
|
||||
RedisBitnamiDockerComposeConnectionDetailsFactoryIntegrationTests() {
|
||||
super("redis-bitnami-compose.yaml", BitnamiImageNames.redis());
|
||||
}
|
||||
|
||||
@Test
|
||||
void runCreatesConnectionDetails() {
|
||||
RedisConnectionDetails connectionDetails = run(RedisConnectionDetails.class);
|
||||
Standalone standalone = connectionDetails.getStandalone();
|
||||
assertThat(connectionDetails.getUsername()).isNull();
|
||||
assertThat(connectionDetails.getPassword()).isNull();
|
||||
assertThat(connectionDetails.getCluster()).isNull();
|
||||
assertThat(connectionDetails.getSentinel()).isNull();
|
||||
assertThat(standalone).isNotNull();
|
||||
assertThat(standalone.getDatabase()).isZero();
|
||||
assertThat(standalone.getPort()).isGreaterThan(0);
|
||||
assertThat(standalone.getHost()).isNotNull();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
services:
|
||||
cassandra:
|
||||
image: '{imageName}'
|
||||
ports:
|
||||
- '9042'
|
||||
environment:
|
||||
- 'CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch'
|
||||
- 'CASSANDRA_DATACENTER=testdc1'
|
||||
@@ -9,4 +9,4 @@ services:
|
||||
- 'HEAP_NEWSIZE=128M'
|
||||
- 'MAX_HEAP_SIZE=1024M'
|
||||
- 'CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch'
|
||||
- 'CASSANDRA_DC=dc1'
|
||||
- 'CASSANDRA_DC=testdc1'
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
services:
|
||||
elasticsearch:
|
||||
image: '{imageName}'
|
||||
environment:
|
||||
- 'ELASTIC_PASSWORD=secret'
|
||||
- 'ES_JAVA_OPTS=-Xmx1024m'
|
||||
ports:
|
||||
- '9200'
|
||||
- '9300'
|
||||
@@ -0,0 +1,10 @@
|
||||
services:
|
||||
database:
|
||||
image: '{imageName}'
|
||||
ports:
|
||||
- '3306'
|
||||
environment:
|
||||
- 'MARIADB_ROOT_PASSWORD=verysecret'
|
||||
- 'MARIADB_USER=myuser'
|
||||
- 'MARIADB_PASSWORD=secret'
|
||||
- 'MARIADB_DATABASE=mydatabase'
|
||||
@@ -0,0 +1,8 @@
|
||||
services:
|
||||
mongo:
|
||||
image: '{imageName}'
|
||||
ports:
|
||||
- '27017'
|
||||
environment:
|
||||
- 'MONGO_ROOT_USERNAME=root'
|
||||
- 'MONGO_ROOT_PASSWORD=secret'
|
||||
@@ -0,0 +1,10 @@
|
||||
services:
|
||||
database:
|
||||
image: '{imageName}'
|
||||
ports:
|
||||
- '3306'
|
||||
environment:
|
||||
- 'MYSQL_ROOT_PASSWORD=verysecret'
|
||||
- 'MYSQL_USER=myuser'
|
||||
- 'MYSQL_PASSWORD=secret'
|
||||
- 'MYSQL_DATABASE=mydatabase'
|
||||
@@ -0,0 +1,7 @@
|
||||
services:
|
||||
neo4j:
|
||||
image: 'bitnami/neo4j:5.16.0'
|
||||
ports:
|
||||
- '7687'
|
||||
environment:
|
||||
- 'NEO4J_PASSWORD=bitnami2'
|
||||
@@ -0,0 +1,9 @@
|
||||
services:
|
||||
database:
|
||||
image: '{imageName}'
|
||||
ports:
|
||||
- '5432'
|
||||
environment:
|
||||
- 'POSTGRESQL_USER=myuser'
|
||||
- 'POSTGRESQL_DB=mydatabase'
|
||||
- 'POSTGRESQL_PASSWORD=secret'
|
||||
@@ -0,0 +1,8 @@
|
||||
services:
|
||||
rabbitmq:
|
||||
image: '{imageName}'
|
||||
environment:
|
||||
- 'RABBITMQ_DEFAULT_USER=myuser'
|
||||
- 'RABBITMQ_DEFAULT_PASS=secret'
|
||||
ports:
|
||||
- '5672'
|
||||
@@ -0,0 +1,7 @@
|
||||
services:
|
||||
redis:
|
||||
image: '{imageName}'
|
||||
ports:
|
||||
- '6379'
|
||||
environment:
|
||||
- 'ALLOW_EMPTY_PASSWORD=yes'
|
||||
Reference in New Issue
Block a user