Commit Graph
50 Commits
Author SHA1 Message Date
volker.raschek 0688315658 chore(ci): remove suffix
Release / release (push) Successful in 1m52s
Release / sync-container-image (push) Successful in 48s
2025-04-14 19:17:56 +02:00
volker.raschek 63a54e130d chore(ci): use goreleaser
Release / release (push) Successful in 6m4s
Release / sync-container-image (push) Failing after 33s
2025-04-14 19:07:10 +02:00
volker.raschek cc9c98b84d chore(renovate): use configuration preset
continuous-integration/drone/push Build is passing
2025-03-30 22:46:31 +02:00
volker.raschek 3c56ae6e5e fix(docker-compose): extend YAML marshaler of service.dependsOn
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
The current implementation of the method DependsOnContainer.MarshalYAML()
transform the short syntax into the long syntax. More about booth version
types of depends_on is described here:

- https://docs.docker.com/reference/compose-file/services/#short-syntax-1
- https://docs.docker.com/reference/compose-file/services/#long-syntax-1

Other applications are not compatible with the long syntax. For this reason the
MarshalYAML method has been adapted to take care of the specific syntax.

As documented of the long syntax, `depends_on.<dependency>.condition: service_started`
is the same as `depends_on: [ 'dependency' ]`, the long syntax will be shortened
when no other condition type of a dependency is specified.
2025-03-04 17:50:01 +01:00
volker.raschek ed7622a34f chore(coverage): ignore coverage.txt 2025-03-04 17:50:01 +01:00
volker.raschek 967c20c638 fix(cmd): replace deprecated cobra function 2025-03-04 17:50:01 +01:00
volker.raschek 68db80a05a fix(yaml): set indentation to 2 spaces
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
The replaced module gopkg.in/yaml.v3 enforce an indentation of 4 spaces, when 0
spaces are defined. This is sad, because the old behavior can not be reproduced.

Instead of using 4 spaces for indentation, when `yamlEncoder.SetIndent(0)` is
called, we call `yamlEncoder.SetIndent(2)` to use 2 spaces for indentation,
because it is closer to 0 instead 4 spaces.
2025-02-25 16:35:44 +01:00
volker.raschek 6761dbf419 test(docker-compose): add further tests regrading depends_on
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2025-02-25 16:21:13 +01:00
volker.raschek ab282e5173 feat: support depends_on
continuous-integration/drone/push Build is passing
This PR supports the extended pattern of `depends_on`. If the short version of
`depends_on` is defined, it will be migrated to the extended version like the
example below:

```yaml
services:
  web:
    depends_on
    - database

services:
  web:
    depends_on:
      database:
        condition: service_started
```

All three types of merging strategies are supported.
2025-02-24 22:44:11 +01:00
volker.raschek 003db26fe5 feat: respect individual ports instead of replacing the entire slice of ports
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
The following patch adapts the logic of the merge strategy existing and last
win for service ports.

In the past, the complete object has been replaced based on the merge strategy.
This behavior has been adapted, that each port should now considered
individually per strategy.

Both strategies now focus on the src port of the host system. With a last-win,
the dest port of the container is overwritten with an existing src port.

```diff
  service:
    my-app:
      ports:
- - 0.0.0.0:8080:80
+ - 0.0.0.0:8080:8080
      - 0.0.0.0:8443:8443
```

The situation is different with the existing win strategy. There, the destination
port can no longer be changed once there is a connection with a sourc port.
2025-02-21 13:55:53 +01:00
volker.raschek f8b4fe9af6 fix(dockerCompoe): compare srcIP and srcPort of mergeExistingWinPorts() 2025-02-21 09:51:53 +01:00
volker.raschek 2c91222753 chore(renovate): disable go package gopkg.in/yaml.v2
continuous-integration/drone/push Build is passing
2025-02-20 17:29:39 +01:00
volker.raschek b45f8181aa style(lint): block unused parameter
continuous-integration/drone/push Build is passing
2025-02-20 17:26:43 +01:00
volker.raschek 13301cb367 fix(dockerCompose): add further methods of port
This patch adds the following methods:

ports.ExistsDstIP()
ports.ExistsDstPort()
ports.ExistsProtocol()
ports.ExistsSrcIP()
ports.ExistsSrcPort()
ports.GetDstIP()
ports.GetDstPort()
ports.GetProtocol()
ports.GetSrcIP()
ports.GetSrcPort()
2025-02-20 17:26:43 +01:00
volker.raschek 0a68b2d8e7 fix(dockerCompose): add port.ExistProtocol 2025-02-20 17:26:43 +01:00
volker.raschek f2dc3d5174 fix(fetcher): handle all os.Stat() errors
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2024-12-03 11:09:38 +01:00
volker.raschek 6ced20b951 fix(ci): update renovate config
continuous-integration/drone/push Build is passing
2024-03-02 13:42:00 +01:00
volker.raschek 2da0b01a44 fix(renovate): remove automerge options
continuous-integration/drone/push Build is passing
2024-01-21 15:03:05 +01:00
volker.raschek b83efda648 test(assets): add depends_on as example
continuous-integration/drone/push Build is passing
2023-11-25 18:21:07 +01:00
volker.raschek 5dea30fec0 fix(domain): iterate when merging over custom configs
The normal dcmerge did not work, as the check and addition was only
possible if at least one attribute such as service, network or volume
was presentThe normal dcmerge did not work, as the check and addition
was only possible if at least one attribute such as service, network or
volume was present.

The logic was adjusted.

The logic was adjusted.
2023-11-25 18:21:07 +01:00
volker.raschek 3d97ee0ab8 fix(lint): increase line length to 120 2023-11-25 18:21:07 +01:00
volker.raschek 8b68c9587c feat: support depends_on 2023-11-25 18:21:07 +01:00
volker.raschek d8ada5578b fix(ci): unsupport arm v7
continuous-integration/drone/push Build is passing
2023-10-30 21:32:36 +01:00
volker.raschek 46dd067b48 fix(renovate): exclude updating docker.io/plugins/docker
continuous-integration/drone/push Build is passing
2023-09-03 16:37:08 +02:00
volker.raschek 751bb810d2 fix(dockerCompose): protect of empty attributes 2023-08-28 11:37:24 +02:00
volker.raschek 9b469bd8c6 fix: rename firstWin to existingWin 2023-08-28 11:13:32 +02:00
volker.raschek 4ad9da6d63 fix(cmd): add flag first-win 2023-08-28 10:57:36 +02:00
volker.raschek 2ea83b7591 fix(dockerCompose): add MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 6f673e4a72 test: add example docker-compose 2023-08-28 10:57:36 +02:00
volker.raschek d9ecf068c9 fix(dockerCompose): add Service.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 4c3c6cd5d2 fix(dockerCompose): add ServiceDeploy.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 23290fbd5d fix(dockerCompose): add ServiceDeployResources.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 07673bfd53 fix(dockerCompose): add ServiceDeployResourcesLimits.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 405a0258f1 fix(dockerCompose): add ServiceNetwork.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 462299d5cd fix(dockerCompose): add ServiceUlimits.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 6524785871 test(dockerCompose): add ServiceUlimitsNoFile.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 1207bcfcab test(dockerCompose): add Volume.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek a656dc2db1 fix(dockerCompose): add ServiceUlimitsNoFile.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 14c645dd96 fix(dockerCompose): add Volume.MergeFirstWin() 2023-08-28 10:57:36 +02:00
volker.raschek 87ec3349ea fix(ci): execute linter and unit-test in parallel
continuous-integration/drone/push Build is passing
2023-08-02 23:26:19 +02:00
volker.raschek ad1cf8cbef fix(ci): execute unit tests on dry-run
continuous-integration/drone/push Build encountered an error
2023-08-02 23:20:38 +02:00
volker.raschek 16f1f5e9da fix(ci): execute unit tests
continuous-integration/drone/push Build is passing
2023-08-02 23:19:08 +02:00
volker.raschek ce48d6dd0c fix(dockerCompose): mergeLastWinImage
continuous-integration/drone/push Build is passing
2023-07-26 14:44:12 +02:00
volker.raschek 3bf9380001 fix(cmd): expect at least one argument
continuous-integration/drone/push Build is passing
2023-07-26 10:43:49 +02:00
volker.raschek f7c1664197 fix(cmd): adapt default output
continuous-integration/drone/push Build is passing
2023-07-26 10:37:56 +02:00
volker.raschek cadf25b089 fix(cmd): rename flag to last-win
continuous-integration/drone/push Build is passing
2023-07-26 10:28:08 +02:00
volker.raschek c50c0a835e fix(gomod): downgrade to yaml v2.0
continuous-integration/drone/push Build is passing
2023-07-26 10:17:32 +02:00
volker.raschek c16871010c style(README): add newline
continuous-integration/drone/push Build is passing
2023-07-26 10:16:15 +02:00
volker.raschek ad29107f60 style(README): rm newline 2023-07-26 10:16:08 +02:00
volker.raschek 3777c49ee9 Initial Commit
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2023-07-26 09:57:40 +02:00