X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=dist%2Fhttp-resources%2F2.0.0%2Fxref-test%2Fde%2Fjuplo%2Fhttpresources%2FConfigurableNginxContainer.html;fp=dist%2Fhttp-resources%2F2.0.0%2Fxref-test%2Fde%2Fjuplo%2Fhttpresources%2FConfigurableNginxContainer.html;h=e5303135a8e0298a03888896a656c70cdfb81e19;hb=96ec104e2974d001e9bc82c3af8b21029b2042d4;hp=0000000000000000000000000000000000000000;hpb=de1fa457a1c69c673d4dd5c0a2c9af568f74ea12;p=website diff --git a/dist/http-resources/2.0.0/xref-test/de/juplo/httpresources/ConfigurableNginxContainer.html b/dist/http-resources/2.0.0/xref-test/de/juplo/httpresources/ConfigurableNginxContainer.html new file mode 100644 index 00000000..e5303135 --- /dev/null +++ b/dist/http-resources/2.0.0/xref-test/de/juplo/httpresources/ConfigurableNginxContainer.html @@ -0,0 +1,120 @@ + + + +ConfigurableNginxContainer xref + + + +
View Javadoc
+1   package de.juplo.httpresources;
+2   
+3   
+4   import java.nio.file.Files;
+5   import java.nio.file.Path;
+6   import java.nio.file.Paths;
+7   import java.util.LinkedHashMap;
+8   import java.util.LinkedList;
+9   import java.util.List;
+10  import java.util.Map;
+11  import org.slf4j.Logger;
+12  import org.slf4j.LoggerFactory;
+13  import org.testcontainers.containers.BindMode;
+14  import org.testcontainers.containers.NginxContainer;
+15  
+16  
+17  /**
+18   * A configurable subclass of the {@link NginxContainer}.
+19   * @author Kai Moritz
+20   */
+21  public class ConfigurableNginxContainer extends NginxContainer
+22  {
+23    private final static Logger LOG =
+24        LoggerFactory.getLogger(ConfigurableNginxContainer.class);
+25  
+26  
+27    public final static int DEFAULT_NGINX_PORT = 80;
+28  
+29    private final Map<String, String> directives;
+30  
+31  
+32    /**
+33     * Creates an instance with a default-configuration, that matches the
+34     * static configuration of the base-class {@link NginxContainer}
+35     */
+36    public ConfigurableNginxContainer()
+37    {
+38      directives = new LinkedHashMap<>();
+39      directives.put("daemon", "off");
+40    }
+41  
+42  
+43    /**
+44     * Adds a global directive to the configuration-map.
+45     * <p>
+46     * This method can only be used to add <em>global</em> directives.
+47     * Global directives are all directives, that are marked with the context
+48     * <code>Main</code> in the {@link http://nginx.org/en/docs/ngx_core_module.html
+49     * Nginx-documentation}, for example <code>daemon</code>, <code>user</code>
+50     * and <code>env</code>.
+51     * <p>
+52     * If you need to modify contexts, like <code>server</code> or
+53     * <code>http</code>, you have to
+54     * {@link #withConfiguration(String) pass in a complete configuration}.
+55     * @param key The key of the directive
+56     * @param value The value of the directive (the <code>;</code> is added automatically)
+57     * @return <code>this</code> instance, to enable a fluid API.
+58     */
+59    public ConfigurableNginxContainer withGlobalDirective(String key, String value)
+60    {
+61      directives.put(key, value);
+62      return this;
+63    }
+64  
+65    public Map<String, String> getGlobalDirectives()
+66    {
+67      return directives;
+68    }
+69  
+70    public ConfigurableNginxContainer withConfiguration(String path)
+71    {
+72      Path config = Paths.get(path);
+73  
+74      if (Files.isRegularFile(config))
+75      {
+76        LOG.info("Binding file {} as /etc/nginx/nginx.conf", config.toAbsolutePath());
+77        addFileSystemBind(path, "/etc/nginx/nginx.conf", BindMode.READ_ONLY);
+78        return this;
+79      }
+80  
+81      if (Files.isDirectory(config))
+82      {
+83        LOG.info("Binding directory {} as /etc/nginx/", config.toAbsolutePath());
+84        addFileSystemBind(path, "/etc/nginx/nginx.conf", BindMode.READ_ONLY);
+85        return this;
+86      }
+87  
+88      throw new IllegalArgumentException(
+89            config.toAbsolutePath() +
+90            " has to represent either a directory, or a regular file!");
+91    }
+92  
+93    @Override
+94    protected void configure()
+95    {
+96      addExposedPort(DEFAULT_NGINX_PORT);
+97      List<String> commands = new LinkedList<>();
+98      commands.add("nginx");
+99      directives.entrySet().forEach((directive) ->
+100     {
+101       commands.add("-g");
+102       commands.add(directive.getKey() + " " + directive.getValue() + ";");
+103     });
+104     LOG.info("CMD: {}", commands);
+105     setCommand(commands.toArray(new String[commands.size()]));
+106   }
+107 }
+
+
+ + +