Moby: 1.13 рдореЗрдВ `рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди` `.env` рдлрд╝рд╛рдЗрд▓ рдХреЛ `рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдЕрдк` рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рджрд┐рд╕ре░ 2016  ┬╖  93рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: moby/moby

docker stack deploy --compose-file рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдирд╛ рдПрдХ рдирдореВрдирд╛ docker-compose.yml рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ:

version: '3'
services:
    nginx:
        image: "${DOCKER_USER}/lnmp-nginx:v1.2"
        build:
            context: .
            dockerfile: Dockerfile.nginx
        ports:
            - "80:80"
        networks:
            - frontend
        depends_on:
            - php
    php:
        image: "${DOCKER_USER}/lnmp-php:v1.2"
        build:
            context: .
            dockerfile: Dockerfile.php
        networks:
            - frontend
            - backend
        environment:
            MYSQL_PASSWORD: Passw0rd
        depends_on:
            - mysql
    mysql:
        image: mysql:5.7
        volumes:
            - mysql-data:/var/lib/mysql
        environment:
            TZ: 'Asia/Shanghai'
            MYSQL_ROOT_PASSWORD: Passw0rd
        command: ['mysqld', '--character-set-server=utf8']
        networks:
            - backend
volumes:
    mysql-data:

networks:
    frontend:
    backend:

рд╕реЗрд╡рд╛ рдХреЗ image рдЕрдиреБрднрд╛рдЧ рдореЗрдВ nginx рдФрд░ php , рдореИрдВрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗ рдбреЙрдХрд░ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ${DOCKER_USER} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдФрд░ рдЕрдЧрд░ рдореИрдВ docker-compose up рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ .env рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ envvar рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдЧрд╛, рдЬреЛ рд╕рд╛рдордЧреНрд░реА рд╣реИ:

DOCKER_USER=twang2218

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдореИрдВ рдЗрд╕ docker-compose.yml docker stack рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реЗрдВрдЧреА:

$ docker stack deploy --compose-file docker-compose.yml lnmp
Ignoring unsupported options: build

Creating network lnmp_frontend
Creating network lnmp_backend
Creating network lnmp_default
Creating service lnmp_php
Error response from daemon: rpc error: code = 3 desc = ContainerSpec: "/lnmp-php:v1.2" is not a valid repository/tag

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, docker stack deploy рдХрдорд╛рдВрдб рдиреЗ .env рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдирд╣реАрдВ рдХреА, ${DOCKER_USER} рдХреЛ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо рдЕрдорд╛рдиреНрдп рд╣реЛ рдЧрдпрд╛ред

рдпрджрд┐ .env рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХреА рдЧрдИ рдереА, рддреЛ рдЕрдВрддрд┐рдо рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо twang2218/lnmp-php:v1.2 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкрд░реНрдпрд╛рд╡рд░рдг рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВ:

$ DOCKER_USER=twang2218 docker stack deploy --compose-file docker-compose.yml lnmp
Ignoring unsupported options: build

Creating network lnmp_frontend
Creating network lnmp_backend
Creating network lnmp_default
Creating service lnmp_mysql
Creating service lnmp_nginx
Creating service lnmp_php

рдФрд░ рд╣рдо рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ docker service inspect рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:

$ docker service inspect lnmp_php | grep Image
                    "Image": "twang2218/lnmp-php:v1.2<strong i="13">@sha256</strong>:4f1aef1350aeef3f757f6b6da8f2e1a79ff849f61382320e4b668bfe2b0d1c5a",

рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо twang2218/lnmp-php:v1.2 рд╣реИ, рдЬреЛ рд╕рд╣реА рд╣реИред

рдореИрдВрдиреЗ рдбрд┐рдЧрдЯрд┐рдпрд▓ рдУрд╢рди рдбреНрд░реЙрдкрд▓реЗрдЯ рдкрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдбреЙрдХрд░ 1.13.0-rc2 рдХреЛ docker-machine рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред

рдпрд╣рд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

$ docker version
Client:
 Version:      1.13.0-rc2
 API version:  1.25
 Go version:   go1.7.3
 Git commit:   1f9b3ef
 Built:        Wed Nov 23 06:32:39 2016
 OS/Arch:      linux/amd64

Server:
 Version:             1.13.0-rc2
 API version:         1.25
 Minimum API version: 1.12
 Go version:          go1.7.3
 Git commit:          1f9b3ef
 Built:               Wed Nov 23 06:32:39 2016
 OS/Arch:             linux/amd64
 Experimental:        false

рдпрд╣рд╛рдБ docker info рд╣реИ:

root<strong i="25">@d1</strong>:~/docker-lnmp# docker info
Containers: 7
 Running: 1
 Paused: 0
 Stopped: 6
Images: 4
Server Version: 1.13.0-rc2
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 43
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
Swarm: active
 NodeID: vyf3mgcj3uonrnh5xxquasp38
 Is Manager: true
 ClusterID: jb8rxvd6ptrn3psfkiixxed7r
 Managers: 1
 Nodes: 3
 Orchestration:
  Task History Retention Limit: 5
 Raft:
  Snapshot Interval: 10000
  Number of Old Snapshots to Retain: 0
  Heartbeat Tick: 1
  Election Tick: 3
 Dispatcher:
  Heartbeat Period: 5 seconds
 CA Configuration:
  Expiry Duration: 3 months
 Node Address: 138.197.195.206
 Manager Addresses:
  138.197.195.206:2377
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 03e5862ec0d8d3b3f750e19fca3ee367e13c090e
runc version: 51371867a01c467f08af739783b8beafc154c4d7
init version: 949e6fa
Security Options:
 apparmor
 seccomp
  Profile: default
Kernel Version: 4.4.0-51-generic
Operating System: Ubuntu 16.04.1 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 488.5 MiB
Name: d1
ID: E6UB:PHX6:I2KY:Q35T:PCCI:MFDQ:ZMMN:2X7K:DEOZ:PAP7:4BUC:FP6X
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
Labels:
 provider=digitalocean
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
arestack areswarm kinenhancement

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ рдореИрдВ рдЗрд╕реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

env $(cat .env | grep ^[A-Z] | xargs) docker stack deploy --compose-file docker-compose.yml [STACK_NAME]

рдЗрд╕ рддрд░рд╣, рд╡реЗрд░рд┐рдПрдмрд▓ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдкрд░ рдЕрдЯрдХрддреЗ рдирд╣реАрдВ рд╣реИрдВ

рд╕рднреА 93 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рд╣реИред .env рд╕рдорд░реНрдерди рд▓рд┐рдЦреЗрдВ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рдХреА рдирд╣реАрдВред

рд╣рдо рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ .env рд╕рдкреЛрд░реНрдЯ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рд╣реИ, рд╣рдордиреЗ рдЗрд╕реЗ рдЕрдкрдиреА рдХрдИ рдХрдВрдкреЛрдЬрд╝ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЧрддрд┐рд╢реАрд▓ рднрд╛рдЧреЛрдВ рдФрд░ рд╕реНрдерд┐рд░ рднрд╛рдЧреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд▓реЛрдб .env рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ .env рдлрд╝рд╛рдЗрд▓ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ docker-compose.yml рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрдерд┐рд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдорд╛рди envvars рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП env_file рдпрд╛ environment рдореЗрдВ docker-compose.yml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред .env рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИред

рдЕрдиреНрдпрдерд╛, рд╣рдореЗрдВ export рдХреЛ .env рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ source .env рд╣рд░ рдмрд╛рд░ docker-compose.yml рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрджрдо рдХрднреА-рдХрднреА рдкреНрд░рд╡рдг рд╣реЛрддреЗ рд╣реИрдВ рдЧрд▓рддреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд┐рдпрд╛ рд╣реИред
рдореИрдВрдиреЗ рдорд╛рдирд╛/рдЙрдореНрдореАрдж рдХреА рдереА рдХрд┐ рдпрд╣ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ рдпрд╣ рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ docker deploy ред

рдореЗрд░реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рд╕реНрдЯреИрдХ рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛ рд░рд╣реА рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ (рдкрд╛рд╕рд╡рд░реНрдб, рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА, рдЖрджрд┐) рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛:

version: '3'

volumes:
  data:
    driver: local

networks:
  backend:
    driver: overlay

services:
  rabbitmq:
    image: rabbitmq:${EXCHANGE_RABBITMQ_TAG}
    volumes: [ "data:/var/lib/rabbitmq" ]
    logging: { driver: gelf, options: { gelf-address: "udp://0.0.0.0:12201" } }
    networks: [ "backend" ]
    ports: [ "15672:15672", "5672:5672" ]
    environment:
      RABBITMQ_DEFAULT_USER: ${EXCHANGE_RABBITMQ_USER}
      RABBITMQ_DEFAULT_PASS: ${EXCHANGE_RABBITMQ_PASS}
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      placement:
        constraints:
          - node.labels.queue-host == true

рдЬрдмрдХрд┐ рдЗрд╕ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЛ Git рдкрд░ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, .env рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВрдиреЗ *.dab рдмрдирд╛рдо рдХрдВрдкреЛрдЬрд╝ рдлрд╛рдЗрд▓реНрд╕ рдХреА рдкреВрд░реА рд╕рд╛рдордЧреНрд░реА/рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓реЛрдЧ рдХреБрдЫ рдЯрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рдпрд╛ рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкреВрд░реА рдЪрд░реНрдЪрд╛ рдХрд╛ рдЯреНрд░реИрдХ рдЦреЛ рджрд┐рдпрд╛ рд╣реИ ...

рд╣реИрд▓реЛ рд╕рднреА рдХреЛ,

рдбреЙрдХрд░ рд╕рдВрд╕реНрдХрд░рдг: v1.13.0-rc4

рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ: рдЕрд╕рдорд░реНрдерд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛: рдмрд┐рд▓реНрдб , рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╕реЗ рдмрд┐рд▓реНрдб рдирд╣реАрдВ рдмрдирд╛рдПрдЧрд╛?

рдФрд░ network_mode рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ: рдЕрд╕рдорд░реНрдерд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛: network_mode.

рдиреАрдЪреЗ рдЖрджреЗрд╢ рд╣реИ:
DOCKER_IMAGE=akhil123 рдбреЙрдХрдЯрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд -c docker-compose.yml foo

рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

@akhildangore рдХреГрдкрдпрд╛ рдЙрди рдореБрджреНрджреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рди рдХрд░реЗрдВ рдЬреЛ рд╕реАрдзреЗ рддреМрд░ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВред docker stack deploy рдлреАрдЪрд░, _by design_ рдмрд┐рд▓реНрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдорд╛рдВрдб рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЙрд╕ рдкрд░ рдПрдХ _build_ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЫрд╡рд┐ рдХреЗрд╡рд▓ _that_ рдиреЛрдб рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред рдЙрд╕ рдЫрд╡рд┐ рдХреЛ рдЭреБрдВрдб рдореЗрдВ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп, рд╕реЗрд╡рд╛ рдЕрдиреНрдп рдиреЛрдбреНрд╕ рдкрд░ рд╢реБрд░реВ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЬрд┐рд╕ рдЫрд╡рд┐ рдХреЛ рдЖрдк рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП; рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЫрд╡рд┐ рдЭреБрдВрдб рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ)

рдХреНрдпрд╛ docker deploy рдкрд░ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ/рд╡рд┐рд░реБрджреНрдз рдХреЛрдИ рдорд╛рдорд▓рд╛/рдЪрд░реНрдЪрд╛ рд╣реИ?

@vovimayhem .env рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЕрднреА рддрдХ рдХреЛрдИ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ https://github.com/docker/docker/pull/30144 рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рд╣рд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддрд╛ рд╣реИ

рдореБрдЭреЗ рдЕрднреА рд╡рд╣ рдЪрд░реНрдЪрд╛ рдорд┐рд▓реА рд╣реИред рдЙрддреНрдХреГрд╖реНрдЯ!

рдореИрдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдмреИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

secrets рд╕реБрд╡рд┐рдзрд╛ рдЬрд╛рд░реА рд╣реЛрдиреЗ рддрдХ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

dsd() {
    stack=${1:-${PWD##*/}} # by default, the name of the cointaining folder
    compose_file=${2:-docker-compose.yml}

    if [ ! -f $compose_file ]; then
        echo "Misses compose file: $compose_file" >&2
        return 1
    fi

    # execute as a subcommand in order to avoid the variables remain set
    (
        # export variables excluding comments
        [ -f .env ] && export $(sed '/^#/d' .env)

        # Use dsd your_stack your_compose_file to override the defaults
        docker stack deploy --compose-file $compose_file $stack
    )
}

рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП; рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЧреБрдкреНрдд рд╕рдорд░реНрдерди 1.13.1 рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрд╣реБрдд рджреВрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

@ рдореИрдВ рдЗрд╕реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:

env $(cat .env | grep ^[A-Z] | xargs) docker stack deploy --compose-file docker-compose.yml [STACK_NAME]

рдЗрд╕ рддрд░рд╣, рд╡реЗрд░рд┐рдПрдмрд▓ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдкрд░ рдЕрдЯрдХрддреЗ рдирд╣реАрдВ рд╣реИрдВ

.env рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЪреАрдЬреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрдирд╛ рд╣рдореЗрд╢рд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ - рдПрдХ рд╕рд░рд▓ рдбреЙрдХрд░ рд░рд╣рд╕реНрдп рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬрд┐рд╕реЗ рдЕрдм рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдореЗрд╢рд╛ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╣рд╛рд░реНрдбрдХреЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЖрдкрдХреЗ рд░реЗрдкреЛ рдореЗрдВред

рдЖрдЗрдП рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк рдПрдХ рдкреВрд░реНрдг рд╕реНрдЯреИрдХ рдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker stack deploy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реИрдВ:

  • рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдареАрдХ рдЙрд╕реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рд╕реНрдЯреЗрдЬрд┐рдВрдЧ рдФрд░ рдкреНрд░реЛрдбрдХреНрд╢рди рдХрд╣реЗрдВ

    • рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдорд╛рдиреЗ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ .env рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рд╕реНрдЯреИрдХ рдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЕрдиреНрдпрдерд╛ рд╕реЗрд╡рд╛ рд╕реНрдХреЗрд▓ рдорд╛рди рд╡рд╛рдкрд╕ 1 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред

рдЖрдк рдЙрдкрд░реЛрдХреНрдд рдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ, DNS рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдПрдХ рд╕реЗрд╡рд╛ рдХреЛ рд╕реБрдирдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрджрд┐ред

рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдХрд╛ рдорд╕реМрджрд╛ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ .env рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░реЗрдЧрд╛, рдЕрдЧрд░ рдХреЛрдИ рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ docker-compose.yml рдХреЗ рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рд╣реИ рдпрджрд┐ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╕рдордЭ рдореЗрдВ рдЖрддреЗ рд╣реИрдВред

docker stack рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди docker-compose рдХрдорд╛рдВрдб рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ .env рдкрдврд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ docker-compse.yml рднреА рдирд╣реАрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕реНрд░реЛрдд рдХреБрдЫ рдФрд░ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

stack deploy рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк рд╣рдореЗрд╢рд╛ .env рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдпрдВ рд╕реНрд░реЛрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдмрд╕ . .env рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ docker stack deploy рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, $variables рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ env .. xargs рдЯреНрд░рд┐рдХ рдиреЗ рдорджрдж рдХреАред
--env-file=FILE рд╡рд┐рдХрд▓реНрдк рдЬреИрд╕реЗ docker run рдореЗрдВ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЕрднреА - рдЕрднреА ред рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ .env рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдЗрд╕рд╕реЗ @ рд╕реА-рдкреНрд░реЛ рдХреЛ рдорджрдж рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП - рдЖрдкрдХреЛ рдЕрдкрдиреА .env рдлрд╝рд╛рдЗрд▓ рдореЗрдВ export ... рд▓рд╛рдЗрдиреЗрдВ рд░рдЦрдиреА рд╣реЛрдВрдЧреАред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк export $(cat .env) рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рд╣реИрд▓реЛ рд╕рднреА рдХреЛ,
рдЖрдЬ рдореИрдВрдиреЗ docker stack deploy рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдореЗрд░реА docker-compose.yml рдлрд╝рд╛рдЗрд▓:

version: '3'
services:
  simple:
    image: alpine
    environment:
      - FOO: ${BAR}
    env_file: .env

рдФрд░ рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ .env рдлрд╝рд╛рдЗрд▓:

BAR=worked

рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж docker stack deploy -c docker-compose.yml test , рдореИрдВрдиреЗ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛:

$ env
BAR=worked
FOO=
...

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, .env рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдкрд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ, рдХрд┐ рдореИрдВ environment рдЕрдиреБрднрд╛рдЧ рдХреЗ рдмрдЬрд╛рдп .env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рде .env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдбреЙрдХрд░ рд╕рдВрд╕реНрдХрд░рдг: v17.03

@ddpaimon
рд╡рд╛рддрд╛рд╡рд░рдг:
- рдлреВ = $ {рдмрд╛рд░}

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .env рдлрд╝рд╛рдЗрд▓ рдХреЗрд╡рд▓ рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдЪрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

рдореИрдХ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░, рдбреЙрдХрд░ рд╕рдВрд╕реНрдХрд░рдг 17.03.1-рд╕реАрдИ, рдмрд┐рд▓реНрдб c6d412e

@realcbb
рд╣рд╛рдВред рд▓реЗрдХрд┐рди рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ .env рдлрд╝рд╛рдЗрд▓ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ environment рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
docker-compose.yml

...
environment:
  - FOO=${FOO:-empty}
...

.env

FOO=filled

рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓рд╛:

$ env
FOO=empty

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ FOO рдХреЛ environment рдЕрдиреБрднрд╛рдЧ рд╕реЗ docker-compose.yml рдореЗрдВ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓ рдЧрдпрд╛:

$ env
FOO=filled

@ddpaimon
рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ .env рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЗрди рдорд╛рдиреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВред

@dnephin : рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ .env рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, .env рдлрд╝рд╛рдЗрд▓ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдХрдореНрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╕реНрдХрд░рдг 3 рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://docs.docker.com/compose/compose-file/#variable -substitution ред
рдЗрд╕рд╕реЗ рдпрд╣ рдЖрднрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ .env рдХреЛ рдбреЙрдХрдЯрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рджреВрд╕рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░рд┐рднрд╛рд╖рд╛ yaml рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рд╡рд╛рдВрдЫрд┐рдд/рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫрд╡рд┐ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдбреЙрдХреНрд╕ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/docker/docker.github.io/issues/3654 рдЦреЛрд▓рд╛

docker stack deploy рдПрдХ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдлрд╛рдЗрд▓ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рд╕рднреА рдЪрд░ рдХреЗ рд▓рд┐рдП рдмреИрд╢ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рднреА рдЧреБрдкреНрдд рд░рдЦрддрд╛ рд╣реИ:

docker stack deploy --with-registry-auth --compose-file=<(ENV1=value1 ENV2=value2 docker-compose -f docker-compose.yaml -f docker-compose.override.yaml -f third-sample-compose.yaml config) stack-name

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдЗрди-рд▓рд╛рдЗрди рдИрдПрдирд╡реА рдЪрд░ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдпрд╛ рдУрд╡рд░рд░рд╛рдЗрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИред рдореЗрд░реА рд▓рд┐рдЦреЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╕рдВрджрд░реНрдн .env рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реИ

docker-compose config рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реА рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рддреА рд╣реИред

рдореЗрд░реЗ .env рджреНрд╡рд╛рд░рд╛ docker stack deploy рдореЗрдВ рдирд╣реАрдВ рдкрдврд╝реЗ рдЬрд╛рдиреЗ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдпрд╛ рдерд╛ред рдореБрдЭреЗ рдпрд╣ рджреЗрдЦрдХрд░ рдереЛрдбрд╝рд╛ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдпрд╣ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рдерд╛ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди .env рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд▓рд┐рдЦреЗрдВред

рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рджреЗрд╡, рдкрд░реАрдХреНрд╖рдг, рдордВрдЪрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ docker stack deploy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ yml рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдорд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд▓реЗрдХрд┐рди .env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрджреАрджрд╛ рдорд╛рд░реНрдЧ рд╣реЛрдЧрд╛ред

рдмрд╕ рдПрдХ рджреЛрд╕реНрддрд╛рдирд╛ рдЕрдиреБрд╕реНрдорд╛рд░рдХ: рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА, рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдЕрдиреНрдп рд╕рд╛рдорд╛рди рдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рдВрд╡реЗрджрдирд╢реАрд▓" рдорд╛рдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП dotenv рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реЛрдВред рдЗрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЙрдХрд░ рд╕реАрдХреНрд░реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рддрд┐ рддреИрдирд╛рдд/рддреИрдирд╛рддреА рдпреЛрдЧреНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВ? рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдордЧреНрд░реА рдЙрдкрд▓рдмреНрдз рд╕рд░реНрд╡рд░, рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░ рд╕рдВрдЧрдарди, рдЖрджрд┐ рд╣реЛрдЧреА... рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ deploy рдкреНрд░рдореБрдЦ рд╕рд╛рдордЧреНрд░реА ( placement рдирд┐рдпрдо, resources рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдореВрд▓реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЪрд╛рд╣рд┐рдП, рдбреЛрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЪрд░ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрд╕реНрдЯ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

"рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рддрд┐ рддреИрдирд╛рдд/рддреИрдирд╛рддреА рдпреЛрдЧреНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВ? рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рд╛рдордЧреНрд░реА рдЙрдкрд▓рдмреНрдз рд╕рд░реНрд╡рд░, рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░ рд╕рдВрдЧрдарди рдЗрддреНрдпрд╛рджрд┐ рд╣реЛрдЧреА ... рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рддреИрдирд╛рддреА рдХреБрдВрдЬреА рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдореВрд▓реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рд╕рд╛рдордЧреНрд░реА (рдирд┐рдпреБрдХреНрддрд┐ рдирд┐рдпрдо, рд╕рдВрд╕рд╛рдзрди рдЖрд░рдХреНрд╖рдг, рдЖрджрд┐), рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд╣реИред"

@vovimayhem рдХреБрдВрдж рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ env_file рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рде рдПрдХ рдПрдХрд▓ рд▓рд┐рдЦреЗрдВ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рдореИрдВ env_file рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рд▓рд┐рд╡рд░реЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреИрдХ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдПрдХрд▓ рдЖрдИрдПрдирдЖрдИ-рд╕реНрдЯрд╛рдЗрд▓ рд╡рд░реНрд░реНрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ (рдЬреЛ рдореИрдВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ) 'рдЯреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ)ред

рд╕реЗрд╡рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ рдмрдврд╝рд┐рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рдордп рдкреНрд░рдХреНрд╖реЗрдк (рдЙрджрд╛. $TAG) рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд▓рдЧрддреЗ рд╣реИрдВред

рдпрджрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрдВрддреНрд░ рдореЗрдВ рд╕реБрд╕рдВрдЧрдд рд░рд╣реЗрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдЕрд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪреБрдирддрд╛ рд╣реИред рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд░рд╣рд╕реНрдп рдФрд░ рд╕реЗрд╡рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рдорд╛рд╣рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдЖрдкрдХреЛ рдпрд╣ @vovimayhem рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ envs рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ; рдЬреЛ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рдПрдХ env_file рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕реЗ stack deploy рдХреЗ рджреМрд░рд╛рди рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ compose up рдХреЗ рджреМрд░рд╛рди рдерд╛ред

@ntwrkguru рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧреА ... рдореИрдВ рдмрд╣реБрдд рджреБрдЦреА рд╣реВрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ;

$ echo 'BAR=worked' > ./.env

$ export $(cat .env) && docker stack deploy testing -c -<<'EOF'
version: '3'
services:
  simple:
    image: nginx:alpine
    environment:
      FOO: ${BAR}
    env_file: .env
EOF

$ docker inspect testing_simple -f '{{json .Spec.TaskTemplate.ContainerSpec.Env}}'
["BAR=worked","FOO=worked"]

@thaJeztah , рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдлрд╝рд╛рдЗрд▓ рд╕реНрд░реЛрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкреНрд▓реЗрдмреБрдХ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдмрдбрд╝рд╛ рдмрд┐рдВрджреБ рдЧреБрдо рд╣реИред рдпрд╣ compose рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ рдФрд░ рдЕрдм stack рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЖрдИрдПрдордУ, рдпрд╣ рдПрдХ рд░рд┐рдЧреНрд░реЗрд╢рди рд╣реИред рд╕рд╛рде рд╣реА, рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдк рдЕрднреА рднреА рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкрд╛рд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдЖрдЬ env_files рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ; stack deploy -c docker-compose.yml рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рд╕рдорд╕реНрдпрд╛ env_file рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд░рд╣реА рд╣реИред

рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд░реНрджрдирд╛рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ stack рдЕрдм рдПрдХрд╛рдзрд┐рдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рддрд┐ рдкрд░рд┐рд╡реЗрд╢ рдПрдХ рджреНрд╡рд┐рддреАрдпрдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЪрд░рдг рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реБрдП, рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рд╕реНрдЯреИрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЖрдк рдЗрд╕реЗ рджреЗрдЦреЗрдВ, рд╣рдо рдПрдХ рд╣реА рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрд▓-рдЪрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╣реБ-рдЪрд░рдгреАрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЪрд▓реЗ рдЧрдПред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, configs рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрдкрд░ рд╣реИред рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ (рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛) рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрд░реЛрдд рдореЗрдВ /application/config.conf рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реЗрдВ, рдкреБрд╢ рдХрд░реЗрдВ рдФрд░ рд╕реАрдЖрдИ рдирдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕реНрдЯреИрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдирд╛рдд рдХрд░реЗрдЧрд╛ред рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрдВрддреНрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИрдХрд░реА рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдЪреЗрдХрд╕рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд╕реНрдХреИрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреАрдЫреЗ рдХреА рдУрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЕрдм K8s рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдореЗрдВ рдлреЗрдВрдХреЛ рдФрд░ рдпрд╣ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЭреБрдВрдб рд╕рд┐рд░реНрдл рдмреЗрд▓ рдкрд░ рддрдм рддрдХ рд░рд╣реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдЦреЛ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЪреБрдкрдЪрд╛рдк рдЧрд┐рд░рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд╛рде рд╣реА, рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрдкрд░ рд╣реИред рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ (рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛) рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рд╕реНрд░реЛрдд рдореЗрдВ /application/config.conf рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реЗрдВ, рдкреБрд╢ рдХрд░реЗрдВ рдФрд░ рд╕реАрдЖрдИ рдирдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕реНрдЯреИрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдирд╛рдд рдХрд░реЗрдЧрд╛ред рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрдВрддреНрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИрдХрд░реА рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

@ntwrkguru рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдирд╛рдо рдмрджрд▓ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдпреЛрдЬрдирд╛ рдирд┐рдпреЛрдЬрд┐рдд рдХреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП config_v1 , config_v2 , ..

рдЗрд╕рд▓рд┐рдП рдХреЙрдиреНрдлрд┐рдЧ рдлрд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдмрд╕ рдЙрд╕ рд╡рд░реНрдЬрди рдХреЛ рдЕрдк рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред

services:
  app:
    [...]
    configs:
      - source: config_v2
      - target: /config.yml

configs:
  config_v2:
    file: ./config.yml

рдореИрдВ рдЕрднреА рддрдХ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдкреАрдЫреЗ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ (рдЖрд╕рд╛рди) рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВред

рдзрдиреНрдпрд╡рд╛рдж @djmaze , рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдВрддрддрдГ рдПрдХ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдмрд╛рдд рд╣реИ рдЬрдм рд╣рд░ рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдЯреНрд░реИрдХрд┐рдВрдЧ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж; рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рднреА рдЯрд┐рдкреНрдкрдгреА рдХреАред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдбреЙрдХрд░ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкрд░рд╡рд╛рд╣ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИред рд░реЛрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдЗрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрд╛рд░рдг рджреЗрдЦ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА рдХрдИ рдЪреАрдЬреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рдФрд░ рдХреНрдпрд╛ рд╣реИ? (рд╡рд╣ рдЖрджрдореА рдХрд╣рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреЛрдб рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ) :-)

рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗ:
echo "$(docker-compose -f stack.yml config 2>/dev/null)" | docker stack deploy -c- stack_name

рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker-compose рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, env vars рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рд╕реНрдЯреНрд░рд┐рдкреНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ stdin рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ docker рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдк рдХрд░рддрд╛ рд╣реИред
'-f stack.yml' рдХреЛ рдЕрдкрдиреА рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рд╕реЗ рдмрджрд▓реЗрдВ рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ docker-compose.yml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВред

+1

рдПрдХ рд╕рд╛рд▓ рдмрд╛рдж рдФрд░ рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХрд░рдирд╛ рд╣реИред 17.09.1 тАЛтАЛрддрдХ, docker stack deploy -f compose.yml рдЬреНрдЮрд╛рдд рд╢реЗрд▓ рд╡рд░реНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

$ printenv | grep PORTAINER
PORTAINER_VER=1.14.3
portainer:
    image: "portainer/portainer:${PORTAINER_VER}"
$ sudo docker stack deploy -c /tmp/docker/jedi-core.yml --with-registry-auth --prune --resolve-image always jedi-core
Updating service jedi-core_redis_server (id: 0csjyandro713y13ncitk6c0k)
Updating service jedi-core_api-gateway (id: gzcz2eturuxqkjojsc9e6954l)
Updating service jedi-core_auto_results_api (id: tw43c6e0x98q6f0m2g0zttwhf)
Updating service jedi-core_auto_results_api_mongo (id: qpwpypyzd9aigpa71xgxxdzcp)
invalid reference format

рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд╡реЗрд░рд┐рдПрдмрд▓ invalid reference format рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред

рдПрдХ рд╕рд╛рд▓ рдмрд╛рдж рдФрд░ рд╣рдореЗрдВ рдЕрднреА рднреА рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХрд░рдирд╛ рд╣реИред 17.09.1 тАЛтАЛрддрдХ, рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди -f compose.yml рдЬреНрдЮрд╛рдд рд╢реЗрд▓ рд╡рд░реНрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рджреЗрдЦреЗрдВ рдХрд┐ SUDO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреИрд╕реЗ рд░рдЦреЗрдВ

$ export PORTAINER_VER=1.14.3
$ printenv | grep PORTAINER
PORTAINER_VER=1.14.3

$ sudo printenv | grep PORTAINER

$ sudo -E printenv | grep PORTAINER
PORTAINER_VER=1.14.3


$ cat > docker-compose.yml <<'EOF'
version: '3'
services:
  portainer:
    image: "portainer/portainer:${PORTAINER_VER}"
EOF


$ sudo -E docker stack deploy -c docker-compose.yml foobar
Creating network foobar_default
Creating service foobar_portainer

$ sudo docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                        PORTS
vt4h0g8yygcg        foobar_portainer    replicated          1/1                 portainer/portainer:1.14.3   

рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдкрд░ рдХреЛрдИ рд╢рдмреНрдж?

[рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ] рдпрд╣ рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ become: yes рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрднреА рднреА рд╡рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИ рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕реНрд░реЛрдд рд╣реИред

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рд╣рдо рдПрдХ рдПрдХрд▓ рд╕реНрдЯреИрдХ рдлрд╝рд╛рдЗрд▓ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдмрджрд╕реВрд░рдд рдФрд░ рдПрдХ рд╣реИрдХ рд╣реИ:

echo "$(docker-compose -f stack.yml config 2>/dev/null)" | docker stack deploy -c- stack_name

рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрдИ рдШрдВрдЯреЛрдВ рд╕реЗ рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрди рд╡рд┐рднрд┐рдиреНрди рдЯреБрдХрдбрд╝реЛрдВ рд╕реЗ рдПрдХ рдбреАрдПрдмреА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛)ред рдПрдХ рдбреЙрдХрд░ рдЯреВрд▓ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдРрд╕рд╛ рдХрд░реЗрдЧрд╛... :-) рд╢рд╛рдпрдж --env-file version.env рдХреЛ docker-compose bundle $ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП?

рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдХрдВрдЯреЗрдирд░/рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП version.env "рдкреНрд░рдХрдЯ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╢рд╛рдорд┐рд▓ рд╣реИред рдореЗрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:

  • .env рдлрд╝рд╛рдЗрд▓ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
  • рд╕реНрд░реЛрдд .env рд╢реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓
  • docker-compose -f stack.yml config > docker-compose.yml . рдЪрд▓рд╛рдПрдБ
  • рдЗрдореЗрдЬ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker-compose pull рдЪрд▓рд╛рдПрдБ
  • docker-compose bundle -o stack.version.dab DAB рдлрд╝рд╛рдЗрд▓ рдЪрд▓рд╛рдПрдБ

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдореИрдВ docker deploy --host manager.swarm.com --bundle-file stack.version.dab --with-registry-auth --resolve-image always stack-name рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рдЬрд╛рдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдбреАрдПрдмреА рдлрд╝рд╛рдЗрд▓ рднреЗрдЬреВрдВрдЧрд╛ рдФрд░ docker deploy рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реВрдВрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдбреЙрдХрд░ рдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ @thaJeztah рдерд╛? рдХреНрдпрд╛ рдХреЛрдИ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ?

[рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ] рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдбреАрдПрдмреА volume: , network: , рдФрд░ deploy: рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдмрд╕ рдПрдХ env рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢реЗрд▓ рдореЗрдВ рд╕реЛрд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдпрд╛ рд╣реИ, рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг, рдлрд┐рд░ рдЙрд╕реЗ рддреИрдирд╛рдд рдХрд░рдирд╛ред

рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдЕрдЧрд░ .env рдлрд╛рдЗрд▓реЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИрдВ рдЬреИрд╕реЗ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬ рдФрд░ --env-file (рд▓рдШреБ -e ) рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП docker stack deploy рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ .env рдлрд╝рд╛рдЗрд▓ рд╕реЗред

+1
рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ .env рдХреЛ рдкрдврд╝рдирд╛ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ docker-compose рдХрд░рддрд╛ рд╣реИред
рдпрд╛ рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛ рдмрд╕ env рдлрд╝рд╛рдЗрд▓ рдХреЛ docker рд╕реНрдЯреИрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░реЗрдВред

рджреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб (_рдЙрдиреНрд╣реЗрдВ рднреА рдиреАрдЪреЗ рдЦреЛрдЬреЗрдВ_) рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд 'рдлрд┐рдХреНрд╕' рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмрджрд╕реВрд░рдд рд╣реИред

_echo "$(docker-compose -f stack.yml config 2>/dev/null)" | рдбреЛрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди -c- stack_name_

_env $(cat .env | grep ^[AZ] | xargs) рдбреЙрдХрдЯрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд --compose-file docker-compose.yml [STACK_NAME]_

рдореИрдВ рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдХрд┐ рдЗрди рдЪрд░реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ docker-compose рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рдЦрддрд░рдирд╛рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдХреЛрдИ рдбреЙрдХрдЯрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЧрд▓рддреА рд╕реЗ docker-compose up -d рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреИрдХ рдХреЛ рддреИрдирд╛рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╡рддрдГ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░реЗрдЧрд╛ред

рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкреНрд░рдХреНрд╖реЗрдк рд╣реЛрдирд╛ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

'.env' рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реИрдк рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрдмреА рдСрди рд░реЗрд▓реНрд╕, рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдмреЗрд╣рддрд░ рд╣реИред

@ntelisil рдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдкреВрд░рдХ рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

https://unix.stackexchange.com/questions/294835/replace-environment-variables-in-a-file-with-their-actual-values :

рдЖрдк envsubst (gnu gettext рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
envsubst <рдЗрдирдлрд╛рдЗрд▓

рдореИрдВрдиреЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛:

$ envsubst < docker-compose.yml-template > docker-compose.yml

рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ 3 рдПрдордмреА рдпрд╛ рдЙрд╕рд╕реЗ рднреА рдЬреНрдпрд╛рджрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдЕрдЪреНрдЫрд╛ @rnickle , рд▓реЗрдХрд┐рди рдЕрднреА рднреА "рд╣реИрдХреА" рдбреЙрдХрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ рдХрд░рддрд╛ рдерд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ (рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдХреГрдкрдпрд╛ рдбреЙрдХрд░ рджреЛрд╕реНрддреЛрдВ рдиреЗ рдореБрдЭреЗ рд╕рд╣реА рдХрд┐рдпрд╛) рдХрд┐ K8s рд╕рдорд░реНрдерди рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж рд╕реЗ рдЭреБрдВрдб-рдореЛрдб рдореЗрдВ рдмрд╣реБрдд рдХрдо рдкреНрд░рдпрд╛рд╕ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдЧрдорди рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ 3 рдПрдордмреА рдпрд╛ рдЙрд╕рд╕реЗ рднреА рдЬреНрдпрд╛рджрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдпрджрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рд╣реИрдВ, рддреЛ docker slack deploy рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдбреЙрдХрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдгред

рдбреЙрдХрд░ рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрднреА рдирд╣реАрдВ рдереА; рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдерд╛; рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдФрд░ рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди _file format_ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рднреА рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

K8s рд╕рдорд░реНрдерди рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж рд╕реЗ рдЭреБрдВрдб рдореЛрдб рдореЗрдВ рдЬрд╛рдиреЗ рдХрд╛ рдмрд╣реБрдд рдХрдо рдкреНрд░рдпрд╛рд╕ рд╣реИ

рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ k8s рдФрд░ swarmkit рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрдЫ рднреА рдзреАрдорд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ "рдХрд┐рд╕реА рднреА рд╕рдордп рд╣рдо рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ"

рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП; рдЖрдЧрд╛рдореА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ docker stack deploy рдХреЗ рд▓рд┐рдП рдХрдИ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ docker рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рдЖрдЧрд╛рдореА docker рд░рд┐рд▓реАрдЬрд╝ рднреА рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧреА

рд╢рдмреНрджрд╛рд░реНрде рдПрдХ рддрд░рдл, рдЕрджреНрдпрддрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЬрдм рдореИрдВ рдбреЙрдХрд░ рдХрд╣рддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░рд╛ рдорддрд▓рдм рдбрд┐рдорди рдпрд╛ рдЗрдВрдЬрди рд╕реЗ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрдкрдХрд░рдг рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдХрдВрдкрдиреА рд╕реЗ рд╣реИред рдХрдо рдкреНрд░рдпрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЙрддреНрдкрддреНрддрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЙрдкрдЬреА рд╣реИ рдХрд┐ рдЭреБрдВрдб-рдореЛрдб рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ рдФрд░ рдЕрднреА рднреА рдкреАрдЫреЗ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрд▓-рдиреЛрдб рдХреЗ рд╕рд╛рде рдереЗред

рдореИрдВ рд╕рд░рд╛рд╣рдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдЕрд▓рдЧ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рднреНрд░рдо рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░рд╛рд╢ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЭреБрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡реНрдпрд╛рдкрд╛рд░ рдХрд░рдирд╛ рд╣реИред рд╡рд╣ рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдбреАрдПрдмреА рдлрд╛рдЗрд▓реЗрдВ рдЕрднреА рднреА рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХреА рдЬрд╛ рд░рд╣реА рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдордиреЗ рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЭреБрдВрдб-рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИ, рдпрд╛ рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рднреА рдирд╣реАрдВ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдлрд┐рд░ рд╕реЗ рд╡рд╣ рдЧрд▓рддреА рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

[рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ]

рдпрджрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рд╣реИрдВ, рддреЛ рдбреЙрдХрдЯрд░ рд╕реНрд▓реИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕реАрдЖрдИ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рд╢рд╛рд╣реА рдЧрдзреЗ рдХрд╛ рджрд░реНрдж рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдХрдВрдкреЛрдЬрд╝ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛, рдПрдирд╡рд░реНрд╕ рдХреЛ рд╕реЛрд░реНрд╕ рдХрд░рдирд╛, рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЛ (рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж) рдзреЛрдирд╛ рдФрд░ рдлрд┐рд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдереВрдХрдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ stack deploy ред (рдФрд░ рдореИрдВ рдпрд╣ рднреА рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рджрд░реНрджрдирд╛рдХ рд╣реИ рдЬрдм :latest рдХрд╛ рдорддрд▓рдм рдЭреБрдВрдб-рдореЛрдб рдореЗрдВ :latest рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред)

_EDIT: рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреЛрд╕реНрдЯ рдЖрдХреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдЖрдПрдЧреАред рдореБрдЭреЗ рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд╕рдВрдж рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреВрд░рд╛ рдбреЙрдХрд░ рд╕реВрдЯ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЙрдХрд░ (рд╕рдВрдЧрдарди) рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬреЛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрдВрдкреЛрдЬрд╝ рдФрд░ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореБрджреНрджреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИред_

рдбреЙрдХрд░ рдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХрднреА рдирд╣реАрдВ рдереА; рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдерд╛; рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдФрд░ рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рднреА рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдирд╣реАрдВред

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдерди рдбреЙрдХрд░ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЗрди рдЙрддреНрдкрд╛рджреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмреАрдЪ рдПрдХ рдореМрд▓рд┐рдХ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдЪрд╛рд╣реЗ рдореИрдВ рдбреЙрдХрд░ рдЗрдВрдЬрди, рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдпрд╛ рдбреЙрдХрд░ рдЭреБрдВрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рд╕рдм рдбреЙрдХрд░ рд╣реИ рдФрд░ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕рдВрднрд╡ рд╣реЛ рд▓рдЧрд╛рддрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрди рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд╕рдордЭ рд╣реИ:

  • рдбреЙрдХрд░ рдЗрдВрдЬрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ
  • рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдПрдХ рд╕реВрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ
  • рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ

рдбреЙрдХрд░ (рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрдВрдЯреЗрдирд░) рдХреЗ рдкреНрд░рдореБрдЦ рд╡рд┐рдХреНрд░рдп рдмрд┐рдВрджреБрдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ рд╣реА рдРрдк рдХрд╛ рдХрдИ рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рдЖрд╕рд╛рди рдкреБрди: рдЙрдкрдпреЛрдЧ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрдВрдкреЛрдЬрд╝ рдХреЛ рдЗрдВрдЬрди рдореЗрдВ рдПрдбрд┐рдЯрд┐рд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕реНрдЯреИрдХ рдХреЛ рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдбрд┐рдЯрд┐рд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдм рд╡реЗ рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрдЯреИрдХ рдХрдореНрдкреЛрдЬрд╝ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рднреНрд░рдо рдкреИрджрд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕реАрдЖрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рд░рдЪрдирд╛ рджреЗрд╡ рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рдареЗрд╕ рдХреЗ рд▓рд┐рдП рдвреЗрд░, рдЬрд░реВрд░реА рд╣реИред рдореИрдВ рдПрдХ рдмрд╣реБ-рдХрдВрдЯреЗрдирд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ "рд╕рд┐рд╕реНрдЯрдо" рдХреЗ рд▓рд┐рдП рд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдФрд░ рд╢реЗрдбреНрдпреВрд▓рд░/рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЭреБрдВрдб-рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╣реБ-рд╣реЛрд╕реНрдЯ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдвреЗрд░ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдиреНрдпрдерд╛, рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА 100% рд╣рд╛рдЬрд┐рд░ рд╣реИред рдореИрдВ рднреА рдирд┐рд░рд╛рд╢ рд╣реВрдВ (рдпрджрд┐ рдпрд╣ рдореЗрд░реА рдЕрдиреНрдп рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛) рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдУрд╣ рд╡рд╛рд╣ред рдореИрдВ рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдЭреБрдВрдб рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╕рдордп рднреА рднреНрд░рдо рдФрд░ рджрд░реНрдж рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЧрдпрд╛ред
рд░рд╣рд╕реНрдп рд╕рднреА рдордЬреЗрджрд╛рд░ рдФрд░ рдЦреЗрд▓ рд╣реИрдВ, рдмрд╕ рд╕рднреА рдмрд╛рд╣рд░реА рдбреЙрдХрдЯрд░ рдЫрд╡рд┐рдпрд╛рдВ рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдФрд░ рдПрдХ рдХрд╕реНрдЯрдо рдЫрд╡рд┐ рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ред рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдмрд╛рд╣рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред
рддреЛ рд╡рд╣ env рдЪрд░ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣реЗ, рд╡реЗ рдХрдВрдкреЛрдЬрд╝ рд╕реЗ рд╕реНрдЯреИрдХ рддрдХ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ! рдореЗрд░реЗ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдЬрдм рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдмрд┐рдирд╛ рдПрдирд╡реА рд╕рдкреЛрд░реНрдЯ рдХреЗ рдбреЙрдХрдЯрд░ рд╕реНрдЯреИрдХ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ? рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ --env-file=dev.env , рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдиреНрдп рдПрдирд╡реА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ ... рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рднрдпрд╛рдирдХ рд╣реИред рдореБрдЭреЗ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ k8s рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреИрдХ рд╢реБрд░реВ рд╕реЗ рд╣реА рдЧрд╛рдпрдм рд╣реИ, рдЙрддреНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдПрдХ рднрдпрд╛рдирдХ рд╡рд┐рдХрд▓реНрдк рд╕рд╛рдмрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреА рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдЧрд╛рдпрдм рд╣реЛрдВрдЧреАред

рджреЛ рд╕рд╛рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ рдФрд░ рд╣рдо рдЕрдм рднреА рдРрд╕реЗ рд╣реА рд╣реИрдВ... рдореИрдВ рдЕрд╕рднреНрдп рдирд╣реАрдВ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдЪрд▓реЛ! рдпрд╣ docker-compose рд╕реЗ рдХреБрдЫ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИ!

рдЗрд╕реА рддрд░рд╣ рдХреА рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЕрднреА рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдЖрдк env_file рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реЛрдВ, рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрднреА рднреА рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрде рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП env_file рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд▓рд┐рдЦреЗрдВ рдлрд╝рд╛рдЗрд▓ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реИред docker-compose рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдмрд╕ --project-directory рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред -f рдкрде/рд╕реЗ/docker-compose.yml

docker stack рдореБрдЭреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдореЗрд░реА рд╕рднреА env_files рд▓реЛрдб рд╣реЛрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред

Env_file рдХреЛ "../../path/to/envrc" рдореЗрдВ рдмрджрд▓рдирд╛ docker-compose рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ dir рдХреЗ рдЕрдВрджрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП

+1

+1

+1 рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдХрдореА рди рджреЗрдЦреЗрдВред

рдпрд╣ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЧреВрдВрдЧрд╛ рд╣реИ рдХрд┐ рдбреЙрдХрд░ рдЕрднреА рддрдХ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

+1 @ рдЬреЛрдЖрдУ-рдлрд┐рдбрд╛рд▓реНрдЧреЛ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣реИред

+1

рдмрд╕ рдЙрд╕реА рдЪреАрдЬрд╝ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдЬреИрд╕реЗ рд╣рдо рдЭреБрдВрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдзрд╛рдЧреЛрдВ рдореЗрдВ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдореИрдВ рдмреЗрд╣рдж рдирд┐рд░рд╛рд╢ рд╣реВрдВред IMO, рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдмрд┐рдВрджреБ рдФрд░ рдордЬрдмреВрдд рддрд░реНрдХ @ntwrkguru рдФрд░ рдЕрдиреНрдп рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдереЗред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рд╣реИрдХреНрд╕ рдЗрд╕реЗ рдирд╣реАрдВ рдХрд╛рдЯреЗрдВрдЧреЗред

.env рдлрд╝рд╛рдЗрд▓

export MYSQL_USER=user

source .env && docker stack deploy

рдпрд╣ рдмреИрд╢ рдХреЗ рд▓рд┐рдП docker-compose up рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛

.env рдлрд╝рд╛рдЗрд▓

export MYSQL_USER=user

source .env && docker stack deploy

рдпрд╣ docker-compose up рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛

рдпрд╣ рдХреЗрд╡рд▓ рдмреИрд╢ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ рди рдХрд┐ рдЕрдиреНрдп рдЧреЛрд▓реЗ рдХреЗ рд▓рд┐рдПред

рдЗрд╕рдиреЗ рдореБрдЭреЗ рдкрд╛рдЧрд▓реЛрдВ рдХреА рддрд░рд╣ рднреНрд░рдорд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдореЗрд░рд╛ рдРрдк рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдПрдЧрд╛, рд▓реЗрдХрд┐рди рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд╕рд╛рде рдирд╣реАрдВред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЕрд╕реНрд╡реАрдХрд░рдг рдкреНрд░рдореБрдЦрддрд╛ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рд▓реЗрдХрд┐рди рдЖрдИрдПрдордУ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ, рдФрд░ рдбреЙрдХрд░ рдЕрдиреБрднрд╡ рдХреЛ рдХрдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╡рд╛рдм рдЪрд╛рд╣рд┐рдП

рд▓рдЧрднрдЧ 2 рд╕рд╛рд▓ рдФрд░ рдХрд┐рд╕реА рдиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рдЙрдард╛рдпрд╛ ... рдЕрдкрдиреА рд╕рд╛рдВрд╕ рди рд░реЛрдХреЗрдВ @jorgelimafeitosa

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕реАрдПрд▓рдЖрдИ рдХрднреА рднреА .env рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред docker stack deploy рдХрдорд╛рдВрдб рдореВрд▓ рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрдЯреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдбрд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдХрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЗрд╕рд▓рд┐рдП --bundle-file рд╡рд┐рдХрд▓реНрдк)ред рдбреАрдПрдмреА рдлрд╛рдЗрд▓реЗрдВ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬ рджреНрд╡рд╛рд░рд╛ docker-compose bundle рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдереАрдВред .env рдФрд░ рдЕрдиреНрдп рд▓рд┐рдЦреЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ docker-compose рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, docker stack deploy рдХреЛ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред docker stack deploy рдореЗрдВ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдорд░реНрдерди рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рдордЭреМрддрд╛ рдерд╛ред

рдбреАрдПрдмреА рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдореВрд▓ рд╡рд╛рджрд╛ рдЕрдм рдбреЙрдХрд░ рдРрдк рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ, рдЬреЛ .env рдХреЛ рднреА рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ docker-compose config рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ docker stack deploy рдкрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

docker stack deploy -c <(docker-compose config) stack-name-here

рдЗрд╕ рддрд░рд╣, .env рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕рд╣рд┐рдд рд╕рднреА рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВред

@kinghuang рдиреЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред "docker-compose config" рдПрдХ рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реА рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди "docker рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд -c docker-compose.yaml my_stack" .env рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рдХрд┐рд╕рдХреА рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ? рдпрд╣ рдбреЙрдХрд░ рд╕рдВрд╕реНрдХрд░рдг 18.09.0 рд╣реИ, рдмрд┐рд▓реНрдб 4d60db4.

@kinghuang рдиреЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред "docker-compose config" рдПрдХ рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реА рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди "docker рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди -c docker-compose.yaml my_stack" .env рд╕реЗ рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рдХрд┐рд╕рдХреА рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ? рдпрд╣ рдбреЙрдХрд░ рд╕рдВрд╕реНрдХрд░рдг 18.09.0 рд╣реИ, рдмрд┐рд▓реНрдб 4d60db4.

рдбреЙрдХрдЯрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди-рд╕реА <(рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝-рдПрдл рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝-рдПрдлрдЖрд░рдкреАрд╕реА-рд╕реНрд╡рд╛рд░реНрдо-рдЯреНрд░реИрдлрд┐рдХ.рд╡рд╛рдИрдПрдордПрд▓ рдХреЙрдиреНрдлрд┐рдЧ) рдЯреНрд░реИрдлрд┐рдХ

@kinghuang

open /dev/fd/63: рдРрд╕реА рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ

рдЪреЗрддрд╛рд╡рдиреА: рдХреБрдЫ рд╕реЗрд╡рд╛рдПрдВ (рдкреНрд░реЛрдЬреЗрдХреНрдЯ1, рдкреНрд░реЛрдЬреЗрдХреНрдЯ2) 'рддреИрдирд╛рддреА' рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓рд┐рдЦреЗрдВ 'рддреИрдирд╛рддреА' рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ - рдЭреБрдВрдб рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker stack deploy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

@kinghuang
рдХреЗрд╡рд▓ рд░реВрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

.env рдФрд░ env_file рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди/рдЙрддреНрдкрд╛рджрди рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рдХреЛрдИ рдЕрд░реНрде рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред рдбреЙрдХрд░ рдЭреБрдВрдб рдХреА рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рддрдХ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рддреЛ, рдЙрд╕ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдбрд┐рдЬрд╛рдЗрдирд░/рдСрдкрд░реЗрдЯрд░ рдЖрдкрдХреЛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдбрдВрдк рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ред

рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдЭреБрдВрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ рд░рд╣рд╕реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди https://github.com/moby/moby/issues/30866#issuecomment -278924983 рджреЗрдЦреЗрдВ рдХрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рд╣рд╛рдЬ рд╕реЗ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЬ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд░рд╣рд╕реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдХрдВрдЯреЗрдирд░ рдЪрд▓рдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдРрдк рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВред рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЧреБрдкреНрдд рдкрд░реНрдпрд╛рд╡рд░рдг рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХрд╣рд╛рдБ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

+1
рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ --env-file рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рд╡рд┐рдХрд╛рд╕/рдкрд░реАрдХреНрд╖рдг/рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдвреЗрд░ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА .yml рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рд╕реНрдЯреИрдХ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рдХреБрдЫ рдирд┐рд░реНрдпрд╛рдд/рд╕реЛрд░реНрд╕рд┐рдВрдЧ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдмрд╣реБрдд рддреНрд░реБрдЯрд┐-рдкреНрд░рд╡рдг рд╣реИ (рдФрд░ рдПрдХ ** рдореЗрдВ рджрд░реНрдж рднреА рд╣рд░ рдмрд╛рд░ рд╕рдЯреАрдХ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП)ред
рдореЗрд░реЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдВрдбреЗрдХреНрд╕-рдирд╛рдо (рд▓реЛрдЪрджрд╛рд░ рдЦреЛрдЬ) рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рд▓реЗрдХрд┐рди рд╢реЗрд╖ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ "рд░рд╣рд╕реНрдп" рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХреА рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рдЯрд┐рдкреНрдкрдгреА рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП --env-file рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдбреЙрдХрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред

рдЕрдкрдиреЗ рдЭреБрдВрдб рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдореИрдВ рдХреБрдЫ рдХрд╛рдордХрд╛рдЬ рдкрд░ рдмрд╕ рдЧрдпрд╛:

  • рд░рд╣рд╕реНрдп/рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдБред
  • рдПрдЬрд╝реНрдпреЛрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдХрд╛ рдПрдХ рдбреЗрдореЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдЬрд╣рд╛рдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдереА, рдЬрд┐рд╕реЗ рд╡реЗ рдХрдВрдкреЛрдЬрд╝ рдлрд╛рдЗрд▓ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд▓рд╛рддреЗ рдереЗ, рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦрд╛ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЧрд┐рдЯрд▓реИрдм рд░рд┐рд▓реАрдЬ рдлреНрд▓реЛ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ред

рдмрд╕ рдЕрдкрдиреЗ docker-compose.yml рдореЗрдВ .env рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

env_file:
  - .env

рджреЗрдЦреЗрдВ https://stackoverflow.com/questions/44694640/docker-swarm-with-image-versions-externalized-to-env-file

рдбреЙрдХрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ .env рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╡рд░рд╣реЗрд▓ рдореЗрдВ рдПрдХ рдХрд╛рдо:

рд╕реНрд╡рд┐рдЪ -рд░реЗрдЧреЗрдХреНрд╕ -рдлрд╛рдЗрд▓ "./.env" { "^\s ([^#].+?)\s =\s (. )" { $name,$value = $matches[1..2]; рд╕реЗрдЯ-рдЖрдЗрдЯрдо "env:$name" $value}}

.ini рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдкреНрд░реЗрд░рд┐рдд: https://stackoverflow.com/questions/417798/ini-file-parsing-in-powershell

рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ: set -a && . .env && set +a && docker stack deploy... ред

рдпрд╣ рдордЬрд╝рд╛рдХреАрдп рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд╛рдо рдкрд░ рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рд╕рд╛рд░рд╛ рджрд┐рди рдмрд┐рддрд╛рдпрд╛ред рдбреЙрдХреНрд╕ рдореЗрдВ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдПрдХ рдЕрд╕реНрд╡реАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ .env docker stack рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред

@cjancsar рд╡реЗ рдХрд░рддреЗ рд╣реИрдВред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХрд╣рддрд╛ рд╣реИ:

рдорд╣рддреНрд╡рдкреВрд░реНрдг: .env рдлрд╝рд╛рдЗрд▓ рд╕реБрд╡рд┐рдзрд╛ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддреА рд╣реИ рдЬрдм рдЖрдк docker-compose up рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ docker рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ

рджрд┐рд▓рдЪрд╕реНрдкреА рд╕реЗ рдмрд╛рд╣рд░ред рдЭреБрдВрдб рдореЛрдб рдореЗрдВ рд▓реЛрдЧ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдЕрдкрдиреА рдирдИ рдирд┐рд░реНрдорд┐рдд рдбреЙрдХрдЯрд░ рдЫрд╡рд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ap plication:v1 to ap plication:v2 , рд╡рд╣реА рд╕реЗрд╡рд╛ (рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдмрджрд▓рд╛)?

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдпрд╛ рд╣реВрдВред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ, рдЫрд╡рд┐ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд-рдирд┐рдпрдВрддреНрд░рдг рдЕрдирдЯреНрд░реИрдХ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ . env рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдореЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рддреБрдЪреНрдЫ рд╣реИ, рдлрд┐рд░ docker-compose up -d

рдЕрдХреНрд╕рд░ рдореИрдВ 'рд╕реНрдЯреЗрдЬрд┐рдВрдЧ' рддреИрдирд╛рддреА (рдкрд░реНрдпрд╛рдкреНрдд рдкрд░реАрдХреНрд╖рдг рдЪрдХреНрд░реЛрдВ рдХреЗ рдмрд╛рдж рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЧрд┐рдЯ рдЯреИрдЧ) рдХреЗ рд▓рд┐рдП рдбреЙрдХрд░ рдЫрд╡рд┐ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рд╢рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдирдпрд╛ рдЫрд╡рд┐ рд╕рдВрд╕реНрдХрд░рдг рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдбреЙрдХрд░ рд░рд╣рд╕реНрдп (рднрд▓реЗ рд╣реА рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ) рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдХреНрдпрд╛ рд▓реЛрдЧ рдпрд╣реА рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдлрд┐рд░ рдХреБрдЫ рдФрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдЖ рд╕рдХреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЬрд┐рд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рдереЗ рд╡рд╣ (рдЕрднреА рддрдХ?) рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

рдирдорд╕реНрддреЗ, рдореИрдВ рд╕реАрдЖрдИ/рд╕реАрдбреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реВрдВ, рдПрдХ .env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдЗрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рдкрд░ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд┐рдлрд╛рд░рд┐рд╢, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдЧреБрдкреНрдд рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪрд░ рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдЫрд╡рд┐ рдХреЛрдб рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ ┬▒ рдЧреИрд░-рд╕реНрдЯреИрдХ/рдЭреБрдВрдб рдкреАрдЫреЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗ рдЗрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ред

рдЙрджрд╛рд╣рд░рдг рдкреНрд░рддрд┐ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд░рд╣рд╕реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреБрд░рд╛рдиреА .env рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИред

https://docs.docker.com/engine/swarm/secrets/#use -secrets-in-compose рдкрд░ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд╕реНрдкрд╖реНрдЯ:

services:
   db:
     image: mysql:latest
     environment:
       MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD_FILE: /run/secrets/db_password
     secrets:
       - db_root_password
       - db_password

secrets:
   db_password:
     file: db_password.txt
   db_root_password:
     file: db_root_password.txt

рд╡рд┐рд▓рд╛рдк

рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ .env рдкреНрд░рддрд┐ @lengxuehx рдкрд░ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ env_file рдХреЛ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ @kinghuang рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рдХреА рддрд░рд╣ рддреИрдирд╛рддреА рдХреБрдВрдЬреА рдХреЛ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ред

docker stack deploy -c <(docker-compose config) stack-name-here

рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ .env рдкреНрд░рддрд┐ @lengxuehx рдкрд░ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ env_file рдХреЛ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ env_file рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреИрдХ рдХрдорд╛рдВрдб рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ docker рдХрдВрдкреЛрдЬрд╝ рдХрд░рддрд╛ рд╣реИред

docker version
Client: Docker Engine - Community
 Version:           19.03.4
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        9013bf5
 Built:             Thu Oct 17 23:44:48 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.4
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.10
  Git commit:       9013bf5
  Built:            Thu Oct 17 23:50:38 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореЗрд░реЗ рдЬреИрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдЕрдм рддрдХ рдкрдврд╝рд╛ рд╣реИ:

  • docker stack deploy "рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди" рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ .env рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдКрдкрд░ рдХрдИ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рд╣реИред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ docker-compose config рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред
    рддреЛ рдЖрдк docker stack deploy -c <(docker-compose config) STACK_NAME рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рд╕реНрдЯреИрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
  • рд╣рд╛рд▓рд╛рдВрдХрд┐ рдбреЙрдХрд░ рдиреЗ рдХреЙрдиреНрдлрд┐рдЧ рдФрд░ рд╕реАрдХреНрд░реЗрдЯ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛, рдЙрдирдХреЗ рдкрд╛рд╕ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡реЗ "рд╡реИрд░рд┐рдПрдмрд▓ рд╕рдмрд╕реНрдЯреАрдЯреНрдпреВрд╢рди" рдХреЗ рд╕рдорд╛рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред
  • env_file docker-compose.yml $ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдмрдирд╛рдП рдЧрдП рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛, рди рдХрд┐ docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдкрд░ (рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ "рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ" рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди")ред

рдЕрджреНрдпрддрди:

рдореБрдЭреЗ @thaJeztah рджреНрд╡рд╛рд░рд╛ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдбреЙрдХрд░ рдбреЙрдХ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

docker stack deploy рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди .env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, HELLO_VERSION рдХреЛ linux рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕реЗрд╡рд╛ hello-world:linux рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреА (рдбрд┐рдлрд╝реЙрд▓реНрдЯ hello-world:latest рдХреЗ рдмрдЬрд╛рдп)

HELLO_VERSION=linux docker stack deploy -c docker-compose.yml mystack
Creating network mystack_default
Creating service mystack_hello

docker service inspect --format '{{.Spec.TaskTemplate.ContainerSpec.Image}}' mystack_hello
hello-world:linux<strong i="14">@sha256</strong>:d073a5775c0b99d653c413161a8ed0e9685061afe697931d30eddf6afeef40f6

рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЖрдк рдЕрднреА рднреА рдЕрдкрдиреЗ docker-compose.yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ env_file рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

env_file рдПрдХ рдЕрд▓рдЧ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ (рдФрд░ docker run --env-file рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ); env_file рд╡рд┐рдХрд▓реНрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмрдирд╛рдП рдЧрдП рдХрдВрдЯреЗрдирд░ рдкрд░ рдХреМрди рд╕рд╛ env-vars рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░ рд╕реНрдЯреИрдХ рдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЪрд░ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдореБрдЭреЗ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдФрд░ рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдХреЗ рдмреАрдЪ рдЕрдиреНрдп рдорд╛рдореВрд▓реА рдЕрдВрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред
рдореИрдВрдиреЗ рдкрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/egyel/dcsh рд╕реНрдХреНрд░рд┐рдкреНрдЯ/рдЯреВрд▓ рдмрдирд╛рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ред

image
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ env_file рдбрд╛рд▓рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реА:

env_file: /path/to/env/file
рдирд╣реАрдВ

env_file:
  - /path/to/env/file

рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреЛрд╕реНрдЯ рд╕реЗ рджреЗрдЦрд╛ рд╣реИ рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЖрдкрдХреА рдЕрдЯрдХрд▓реЛрдВ рдХреЗ рд╕рдорд╛рди) рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреЙрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдбреЙрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ env_file рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ рдПрдирд╡реА рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░реНрд╕ рдХреЛ рдлрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
docker-stack.yml рдлрд╝рд╛рдЗрд▓ рд▓реЗрдХрд┐рди рд╡реЗ рдЕрднреА рднреА рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдк рдЬреЛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдЖрдкрдХреЛ рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ
env рдлрд╝рд╛рдЗрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред

рд╕реВрд░реНрдп рдкрд░, 17 рдордИ, 2020, 06:08 raphyphy [email protected] рдиреЗ рд▓рд┐рдЦрд╛:

[рдЫрд╡рд┐: рдЫрд╡рд┐]
https://user-images.githubusercontent.com/30310576/82135555-a1e4be00-9836-11ea-9df4-a1b82e014b0e.png
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдЕрдкрдиреЗ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдореЗрдВ env_file рдбрд╛рд▓рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реА:

env_file: /path/to/env/file
рдирд╣реАрдВ

env_file:

  • /рдкрде/рд╕реЗ/env/рдлрд╝рд╛рдЗрд▓

рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреЛрд╕реНрдЯ рд╕реЗ рджреЗрдЦрд╛ рд╣реИ рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
(рдЖрдкрдХреА рдЕрдЯрдХрд▓реЛрдВ рдХреЗ рд╕рдорд╛рди) рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ
рдбреЙрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ env_file рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
рдХрд╛рдоред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/moby/moby/issues/29133#issuecomment-629740002 , рдпрд╛
рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд
https://github.com/notifications/unsubscribe-auth/ABHLQMCARDQGJQIBWCQKAYLRR5PMHANCNFSM4CYRHCTA
.

рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рд╕рдорд╛рдзрд╛рди:

docker stack deploy -c <(docker-compose config) stack-name-here

рдЗрд╕рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реИ (рдореЗрд░реЗ рд▓рд┐рдП) рдХрд┐ .env рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, docker-compose.override.yml рдлрд╛рдЗрд▓реЗрдВ рдЖрдо рддреМрд░ рдкрд░ рдореЗрд░реЗ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдЕрдзрд┐рдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдЬреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп рд▓рд╛рдПред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрд▓рдЧ docker-compose-production.yml рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛, рднрд▓реЗ рд╣реА рдЗрд╕рдореЗрдВ рдХреБрдЫ рджреЛрд╣рд░рд╛рд╡ рд╢рд╛рдорд┐рд▓ рд╣реЛред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕реАрдПрд▓рдЖрдИ рдХрднреА рднреА .env рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред docker stack deploy рдХрдорд╛рдВрдб рдореВрд▓ рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрдЯреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдбрд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдХрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЗрд╕рд▓рд┐рдП --bundle-file рд╡рд┐рдХрд▓реНрдк)ред рдбреАрдПрдмреА рдлрд╛рдЗрд▓реЗрдВ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬ рджреНрд╡рд╛рд░рд╛ docker-compose bundle рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдереАрдВред .env рдФрд░ рдЕрдиреНрдп рд▓рд┐рдЦреЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ docker-compose рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, docker stack deploy рдХреЛ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗред docker stack deploy рдореЗрдВ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдорд░реНрдерди рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рдордЭреМрддрд╛ рдерд╛ред

рдбреАрдПрдмреА рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдореВрд▓ рд╡рд╛рджрд╛ рдЕрдм рдбреЙрдХрд░ рдРрдк рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ, рдЬреЛ .env рдХреЛ рднреА рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ docker-compose config рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ docker stack deploy рдкрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

docker stack deploy -c <(docker-compose config) stack-name-here

рдЗрд╕ рддрд░рд╣, .env рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕рд╣рд┐рдд рд╕рднреА рдбреЙрдХрд░ рдХрдВрдкреЛрдЬрд╝ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВред

рдпрд╣ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЕрдЧрд░ рдЖрдкрдХреА рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ "docker-compose.yml" рдирд╛рдо рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдХрдорд╛рдВрдб рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдВрдкреЛрдЬрд╝ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдбреЙрдХрд░ рд╕реНрдЯреИрдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди-рд╕реА <(рдбреЙрдХрд░-рд▓рд┐рдЦреЗрдВ-рдПрдл рдХрд╕реНрдЯрдо-рдХрдВрдкреЛрдЬрд╝-FILENAME.yml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди) рдХрд╕реНрдЯрдо-рд╕реНрдЯреИрдХ

<(docker-compose -f CUSTOM-COMPOSE-FILENAME.yml config рд╣реИрдХ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди !!! docker-compose config рдФрд░ docker-compose -f myfile.yml config рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рд╡рд╣реА рд╣реЛ! рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХрднреА-рдХрднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрджреНрдзрд░рдгреЛрдВ рдореЗрдВ env рдЪрд░ рд▓рдкреЗрдЯрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдЧрд▓рдд рд╣реЛрдЧрд╛!

рдЙрджрд╛рд╣рд░рдг:

environment:
  SERVER_URL: '"xxx"'

рдХреЗ рдмрдЬрд╛рдП

environment:
  SERVER_URL: xxx

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

cmingxu picture cmingxu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

subchen picture subchen  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

noahwhite picture noahwhite  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cefn picture cefn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dbanck picture dbanck  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ