docker stack deploy --compose-file
é¢æ°ããã¹ãããããã«ããµã³ãã«docker-compose.yml
ã®1ã€ãããŒãããŸãã
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:
ãµãŒãã¹nginx
ãšphp
ã®image
ã»ã¯ã·ã§ã³ã§ã ${DOCKER_USER}
ã䜿çšããŠç°å¢å€æ°ããDockerIDãååŸããŸããã ãŸãã docker-compose up
ã䜿çšãããšãããã©ã«ãã®envvarãã¡ã€ã«ãšããŠ.env
ãã¡ã€ã«ãèªã¿èŸŒãŸããŸããå
容ã¯æ¬¡ã®ãšããã§ãã
DOCKER_USER=twang2218
ãã ãã docker stack
ã䜿çšããŠãã®docker-compose.yml
$ãå±éãããšã次ã®ãšã©ãŒãçºçããŸãã
$ 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
ã§ãããã¯æ£ããã§ãã
ãã®æ©èœãDigtialOceanããããã¬ããã§ãã¹ãããŸãããããã¯ã docker-machine
ãä»ããŠdocker1.13.0-rc2ãã€ã³ã¹ããŒã«ããŸããã
ããŒãžã§ã³ã¯æ¬¡ã®ãšããã§ãã
$ 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
ããã¯ä»æ§ã«ãããã®ã§ãã .env
ã®ãµããŒãã¯ããã¡ã€ã«åœ¢åŒã§ã¯ãªããäœæã®æ©èœã§ãã
å°æ¥ã®ãªãªãŒã¹ã§ãããè¿œå ããããšã«ã€ããŠè©±ãåãããšã¯ã§ããŸããããããæ¬åœã«æè¯ã®ãªãã·ã§ã³ã§ãããã©ããã¯ããããŸããã
.env
ã®ãµããŒãã¯ãäœæã§éåžžã«åœ¹ç«ã¡ãŸããå€ãã®äœæãã¡ã€ã«ã§äœ¿çšããŸããã docker-compose.yml
ãã¡ã€ã«ã®åçéšåãšéçéšåãåé¢ããŸãã ããã©ã«ãã§ããŒã.env
ã䜿çšãããšãç°å¢ããšã«ç°ãªã.env
ãã¡ã€ã«ãæäŸãã docker-compose.yml
ãšé¢é£ããã¹ã¯ãªãããéçã«ä¿ã€ããšãã§ããŸãã
docker-compose.yml
env_file
ãŸãã¯environment
$ã䜿çšããŠãåãenvvars眮æçµæãéæããããšã¯ã§ããŸããã .env
ã¯ãããè¡ãæãç°¡åãªæ¹æ³ã§ãã
ãã以å€ã®å Žåã¯ã .env
ãã¡ã€ã«ã®åè¡ã«export
ã®ãã¬ãã£ãã¯ã¹ãä»ãã docker-compose.yml
ãããŒãããåã«æ¯åæåã§source .env
ãä»ããå¿
èŠããããäœåãªæé ãçºçããããšããããŸããééããã
ç§ã¯ã¡ããã©ããã«æ°ã¥ããŸããã
Composeã®å Žåãšåãããã«æ©èœãããšæ³å®/æåŸ
ããŠããŸãããã docker deploy
ã®å Žåã¯ããã§ã¯ãããŸããã
ç§ã®ç¹å®ã®ã±ãŒã¹ã§ã¯ã .env
ãã¡ã€ã«ã䜿çšããŠãã¹ã¿ãã¯ã«äœæãããµãŒãã¹ã§äœ¿çšãããæ©å¯ããŒã¿ïŒãã¹ã¯ãŒããAPIããŒãªã©ïŒãæ ŒçŽããããšãæåŸ
ããŠããŸããã
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ãšcomposeãã¡ã€ã«ã®ãã¹ãŠã®å 容/å±¥æŽããã©ããŸããããçããã¯äœããé¿ããããšããŠããããŸãã¯ããè¯ã解決çãææ¡ããŠããããã«æããŸãããè°è«å šäœãèŠå€±ããŸãã...
çããããã«ã¡ã¯ã
DockerããŒãžã§ã³ïŒv1.13.0-rc4
ãšã©ãŒãçºçããŸãïŒãµããŒããããŠããªããªãã·ã§ã³ãç¡èŠããŸãïŒãã«ããDockerfileãããã«ããäœæããªããšããæå³ã§ããïŒ
ãŸããnetwork_modeã§ãåããšã©ãŒãçºçããŸãïŒãµããŒããããŠããªããªãã·ã§ã³ãç¡èŠããŸãïŒnetwork_modeã
以äžã¯ã³ãã³ãã§ãïŒ
DOCKER_IMAGE = akhil123 docker stack deploy -c docker-compose.yml foo
ãããããé¡ãããŸãã
@akhildangoreçŽæ¥é¢ä¿ã®ãªã質åã«ã€ããŠã¯ãã³ã¡ã³ãããªãã§ãã ããã docker stack deploy
æ©èœã_bydesign_ã¯ãã«ããå®è¡ããŸããã ãã®çç±ã¯ãã³ãã³ãã®å®è¡å
ã®ãã¹ãã§_build_ãå®è¡ããããããã€ã¡ãŒãžã¯_that_ããŒãã§ã®ã¿äœ¿çšå¯èœã«ãªãããã§ãã ãã®ã€ã¡ãŒãžãSwarmã«ãããã€ããå Žåãä»ã®ããŒãã§ãµãŒãã¹ãéå§ããããšã¯ã§ããŸããã ãµãŒãã¹ããããã€ããã«ã¯ããããã€ããã€ã¡ãŒãžãã¬ãžã¹ããªã«ããã·ã¥ãããŠããããšã確èªããŸãïŒãŸãã¯ãã¹ãã®ããã«ãã€ã¡ãŒãžã矀ãã®ãã¹ãŠã®ããŒãã§äœ¿çšå¯èœã§ããããšã確èªããŸãïŒ
docker deploy
ã§ãã®åäœããµããŒãããããšã«è³æ/å察ããã±ãŒã¹/ãã£ã¹ã«ãã·ã§ã³ã¯ãããŸããïŒ
@vovimayhem .env
ãã¡ã€ã«ã«ã€ããŠã¯ãŸã 決å®ãããŠããŸããããäœæãã¡ã€ã«ã«ã·ãŒã¯ã¬ããã®ãµããŒããè¿œå ããhttps://github.com/docker/docker/pull/30144ã«èå³ããããããããŸããã
ç§ã¯ã¡ããã©ãã®è°è«ãèŠã€ããŸããã åªããïŒ
åé¿çãšããŠbashé¢æ°ã䜿çšããŠããŸãã
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
)
}
ãã®åé¡ã賌èªããŠãã人ã®ããã«; docker-composeãã¡ã€ã«ã®ã·ãŒã¯ã¬ãããµããŒãã¯1.13.1ãªãªãŒã¹ã«å«ãŸããäºå®ã§ãããå°æ¥çã«ã¯ããã»ã©é ããªãã¯ãã§ãã
@whoanãããåé¿çãšããŠäœ¿çšããŠããŸãïŒ
env $(cat .env | grep ^[A-Z] | xargs) docker stack deploy --compose-file docker-compose.yml [STACK_NAME]
ããããã°ãå€æ°ãã¿ãŒããã«ãŠã£ã³ããŠã§ã¹ã¿ãã¯ããããšã¯ãããŸãã
.env
ãã¡ã€ã«ããç©äºãããŒãããæ©èœãããããšã¯åžžã«çŽ æŽãããããšã§ã-åé¿ã§ããããåçŽãªDockerã·ãŒã¯ã¬ããã®ãŠãŒã¹ã±ãŒã¹ãé€ããŠãããŒãã³ãŒãã£ã³ã°ããããªãDockerComposeå€ãåžžã«ãããŸããªããžããªå
ã
docker stack deploy
ã䜿çšããŠå®å
šãªã¹ã¿ãã¯ããããã€ãã次ã®èŠä»¶ããããšä»®å®ããŸãã
.env
ãã¡ã€ã«ã§ãããæ§æã§ããªãå Žåã¯ãæ¯åã¹ã¿ãã¯ããããã€ããåã«docker-compose.yml
ãã¡ã€ã«ãæåã§å€æŽããå¿
èŠããããŸããããããªããšããµãŒãã¹ã¹ã±ãŒã«å€ã1ã«æ»ããŸãã
ãããã¯ãŒã¯ããµãŒãã¹ããªãã¹ã³ããDNSã®æ§æãªã©ãäžèšãæ¡åŒµã§ããŸãã
äžèšã®ãŠãŒã¹ã±ãŒã¹ãçã«ããªã£ãŠãããšæãããå Žåã docker-compose.yml
ãšåããã£ã¬ã¯ããªã«ãã¡ã€ã«ãååšããå Žåã .env
ãã¡ã€ã«ãããŒãããPRãäœæã§ããŸãã
docker stack
deployã®èšèšã¯ã docker-compose
ã³ãã³ããšã¯å°ãç°ãªããŸãã ããã©ã«ãã§.env
ãèªãã ãã§ã¯æå³ããªããšæããŸãã docker-compse.yml
ã§ãããããã©ã«ãã§ã¯èªã¿åãããŸãããå°æ¥ãããã©ã«ãã®ãããã€ãœãŒã¹ãå¥ã®ãã®ã«ãªãå¯èœæ§ãããããã§ãã
stack deploy
ãå®è¡ããåã«ããã€ã§ãèªåã§.env
ãã¡ã€ã«ãå
¥æã§ããŸãã
$ docker stack deploy
ãåŒã³åºãåã®. .env
ã ãã§ã¯åœ¹ã«ç«ã¡ãŸããã$å€æ°ã¯çœ®ãæããããŸããã env .. xargs
ã®ããªãã¯ã ãã圹ã«ç«ã¡ãŸããã
docker run
--env-file=FILE
ãªãã·ã§ã³ããããšäŸ¿å©ã§ãã
ãã ã docker stackdeployãåŒã³åºãåã®.envã¯åœ¹ã«ç«ã¡ãŸãã
ããã¯@ C-Proã«åœ¹ç«ã€ã¯ãã§ã- .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
ãã¡ã€ã«ã䜿çšããããšã¯ã§ããŸããã
DockerããŒãžã§ã³ïŒv17.03
@ddpaimon
ç°å¢ïŒ
--FOO = $ {BAR}
.envãã¡ã€ã«ã¯ã³ã³ãããŒã«å¯ŸããŠã®ã¿æ©èœããdocker-compose.ymlãã¡ã€ã«å€æ°ã®çœ®æã«å¯ŸããŠã¯æ©èœããªãããã§ãã
Docker for MACãDockerããŒãžã§ã³17.03.1-ceããã«ãc6d412e
@realcbb
ã¯ãã ãã ããã³ã³ããå
ã§.env
ãã¡ã€ã«å€æ°ã䜿çšããã«ã¯ã environment
ã»ã¯ã·ã§ã³ã§ããããåé€ããå¿
èŠããããŸãã
äŸãã°ïŒ
docker-compose.yml
...
environment:
- FOO=${FOO:-empty}
...
.env
FOO=filled
ã³ã³ããã§ç§ã¯ãããæã«å ¥ããŸããïŒ
$ env
FOO=empty
ãããã docker-compose.yml
ã®environment
FOO
ãåé€ãããšã次ã®ããã«ãªããŸãã
$ env
FOO=filled
@ddpaimon
ç°å¢ã§æå®ãããç°å¢å€æ°ã¯ã.envãã¡ã€ã«ã§æå®ããããããã®å€ããªãŒããŒã©ã€ãããŸãã
@dnephin ïŒ.envã¯dockercomposeãã¡ã€ã«åœ¢åŒã®äžéšã§ã¯ãªããšè¿°ã¹ãŠããŸãã ãã ãã.envãã¡ã€ã«æ©èœã¯ããã¡ã€ã«ã®äœæããŒãžã§ã³3ãªãã¡ã¬ã³ã¹ïŒ https://docs.docker.com/compose/compose-file/#variable -substitutionïŒã«èšèŒãããŠããŸãã
ããã«ããã.envã¯docker stackdeployã§ãæ©èœããã¯ãã§ãããšããå°è±¡ãäžããŸãã
ããã«å ããŠãä»ã®äººããã§ã«è¿°ã¹ãããã«ãå®éã®ç°å¢åºæã®å€ãã¹ã¿ãã¯å®çŸ©yamlããåé¢ããããšã¯ãéåžžã«å¿
èŠãšãããŠããæ©èœã§ãã å
·äœçã«ã¯ãããã䜿çšããŠã€ã¡ãŒãžã®ããŒãžã§ã³ãšè€è£œãæå®ããŸãã
ãããã§ãç§ã¯ããã¥ã¡ã³ããä¿®æ£ããããã«https://github.com/docker/docker.github.io/issues/3654ãéããŸãã
docker stack deploy
ã¯ãçæããããã¡ã€ã«ãåãããšãã§ããŸãã ããã¯ç§ã®ãã¹ãŠã®å€æ°ã«å¯ŸããŠbashã§æ©èœããç§å¯ãç§å¯ã«ããŸãã
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å€æ°ãè¿œå ã®å€æ°ãŸãã¯ãªãŒããŒã©ã€ããšããŠè¿œå ããããšã«æ³šæããŠãã ããã ç§ã®äœæãã¡ã€ã«ã¯.envãã¡ã€ã«ãåç §ããŠãããããã¯æ©èœããŸãã ãããã圹ã«ç«ãŠã°å¹žãã§ãð
docker-compose config
ã®æ©èœã¯ããããçµã³ä»ãããã®ã§ãã
.env
ãdocker stack deploy
ã«èªã¿èŸŒãŸããªããšãã解決çãæ¢ããŠãããšãã«ããã®åé¡ã«ééããŸããã ãµããŒããããŠããªãããšã«å°ãé©ããŠããŸãããïŒããã¥ã¡ã³ããæ確ã«ããããšãã§ããŸããïŒãcomposeã®ããã«.env
ã®ãµããŒããè¿œå ããããšæããŸãã
ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ãéçºããã¹ããã¹ããŒãžã³ã°ç°å¢ã§docker stack deploy
ã䜿çšããã¹ã¿ãã¯ãªãã·ã§ã³ã«ç°å¢å€æ°ã䜿çšããŠymlãã¡ã€ã«ãåãã«ä¿ã€ããšã§ãã
çŸåšãããã«æ²èŒãããŠããåé¿çã®1ã€ã䜿çšããŠããŸããã .env
ãã¡ã€ã«ã䜿çšããããšããå§ãããŸãã
ãããããããªãã€ã³ããŒïŒdotenvãã¡ã€ã«ã䜿çšããŠãã¯ã©ã¹ã¿ãŒã«é 眮ããã®ã«ãæ©å¯ããšèŠãªãããAPIããŒããã¹ã¯ãŒãããã®ä»ã®ãã®ãä¿åããããšããŠããå¯èœæ§ããããŸãã ãã®ãããªå Žåã¯ã Dockerã·ãŒã¯ã¬ããã䜿çšããå¿ èŠããããŸãã
ä»ã®ãã®ã«ã€ããŠã¯ããããã€/ãããã€å¯èœãªç°å¢ããšã«1ã€ã®äœæãã¡ã€ã«ãçšæããããšããå§ãããŸããïŒ ç°ãªãç°å¢éã§å€æŽããããã®ã®ã»ãšãã©ã¯ã䜿çšå¯èœãªãµãŒããŒãç°ãªããµãŒããŒçµç¹ãªã©ã§ãããããã£ãŠã deploy
ããŒã³ã³ãã³ãïŒ placement
ã«ãŒã«ã resources
ïŒã«ç°ãªãå€ãå¿
èŠã«ãªããŸãã
å®éã«ãã®æ©èœãå¿ èŠãªã®ã§ãããDocker Stack Deployã䜿çšããå Žåãäœæãã¡ã€ã«å ã®å€æ°ãç°ãªããã¹ãã§ç°ãªãå€ãšããŠæ±ãããšãã§ããŸãã
ãä»ã®ãã®ã«ã€ããŠã¯ããããã€/ãããã€å¯èœãªç°å¢ããšã«1ã€ã®äœæãã¡ã€ã«ãçšæããããšããå§ãããŸããïŒç°ãªãç°å¢éã§å€æŽããããã®ã®ã»ãšãã©ã¯ã䜿çšå¯èœãªãµãŒããŒãç°ãªããµãŒããŒçµç¹ãªã©ã§ã...ãããã£ãŠããããã€ããŒã«ç°ãªãå€ãå¿ èŠã§ãå 容ïŒé 眮ã«ãŒã«ããªãœãŒã¹äºçŽãªã©ïŒããã¹ãŠã«1ã€ã®ãã¡ã€ã«ã䜿çšããã®ã¯å°ãè€éãããŸããã
@vovimayhemççŽã«èšã£ãŠç³ãèš³ãããŸããããenv_fileã䜿çšããŠå€æ°ã眮æããåäžã®äœæãã¡ã€ã«ã䜿çšããã»ã©æå³ããããŸããã env_file圢åŒã䜿çšããããšããå§ãããŸããããã«ãããã¹ã¿ãã¯ãææç©ãšããŠé¡§å®¢ã«æäŸããåäžã®iniã¹ã¿ã€ã«ã®varsãã¡ã€ã«ãæŽæ°ããããã«ãã¬ãŒãã³ã°ããæ¹ããäœæãã¡ã€ã«ãæ··ä¹±ããããããã¯ããã«ç°¡åã«ãªããŸãïŒç§ã¯ãããè¡ããŸãïŒã 'ããããªãïŒã
ãµãŒãã¹æ§æã¯åªããè¿œå æ©èœã§ãããå±éæéã®è£éã«ã¯äœ¿çšã§ããªãããã§ãïŒ$ TAGãªã©ïŒã
ç°å¢å€æ°ããŸã£ãããµããŒããããŠããå Žåã¯ãããŒã«éã§ãããã解決ããããã«äœ¿çšãããã¡ã«ããºã ã«äžè²«æ§ããããŸãã ã¹ã¿ãã¯ã®ãããã€ã¯ãç°å¢å€æ°ã®åäœãæ ¹æ¬çã«å€æŽããã«ãäžè²«æ§ããªãããšãéžæããŠããããã§ãã ã·ãŒã¯ã¬ãããšãµãŒãã¹æ§æã¯ãç°å¢å€æ°ã®ããã€ãã®äœ¿çšæ³ã®ããè¯ã代æ¿æ段ã§ããããããã¯å å«ããŸããã
@vovimayhemã§ã¯ååŸã§ããªãããã§ãã envãã³ã³ããã«æž¡ãããšã«ã€ããŠè©±ããŠããã®ã§ã¯ãããŸããã ããã¯æåŸ
ã©ããã«æ©èœããŸãã ã€ãŸãã compose up
ã®ãšããšåãããã«ã stack deploy
ã®éã«è§£æãããenv_fileã䜿çšãããšããããšã§ãã
@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
ã§ã¯äžå¯èœã§ãã IMOãããã¯ååž°ã§ãã ãŸããããªãã®äŸã§ã¯ããŸã ç°å¢å€æ°ãã³ã³ããã«æž¡ããŠããŸãã ä»æ¥ã¯env_files
ã§ãããã§ããŸãã åé¡ã¯ã stack deploy -c docker-compose.yml
æäœäžã«env_file
ã解æããããšã§ãã
stack
ã¯è€æ°ã®äœæãã¡ã€ã«ããµããŒãããªããªã£ããããããã¯ç¹ã«èŠçã§ããããã§ãªããã°ãç°å¢ããšã«2çªç®ã®äœæãã¡ã€ã«ã䜿çšããã ãã§æžã¿ãŸãã ãã®ããã«ããã«ã¯ãäœæãã¡ã€ã«ããã¹ã¿ãã¯ãã¡ã€ã«ãäœæããå¿
èŠããããå¥ã®æé ãå¿
èŠã«ãªããŸãã ãããã£ãŠãã©ã¡ãã®èŠæ¹ãããŠããåãæçµçµæãéæããããã«ãã·ã³ã°ã«ã¹ãããããã»ã¹ãããã«ãã¹ãããããã»ã¹ã«ç§»è¡ããŸããã
ãŸããFWIWã configs
ã¯ãå®éã®æ§æã®ç§ã®çµéšã§ã¯å®éã«ã¯å£ã£ãŠããŸãã ç§ã¯ããœãŒã¹ã«/application/config.conf
ãå«ããããšãã§ãããšæ³åããŠããŸããïŒæåŸ
ããŠããŸããïŒã ãã®ãã¡ã€ã«ãæŽæ°ããã³ããããããã·ã¥ãããšãCIã¯æ°ããæ§æã§ã¹ã¿ãã¯ãåãããã€ããŸãã ããã¯ããã¡ã€ã«åããã®ä»ã®ã¡ã«ããºã ãå€æŽããããã®ããã«ãŒãªãã§ã¯äžå¯èœã§ãã 確ãã«ãå°ãªããšããã¡ã€ã«ããã§ãã¯ãµã ããããã³ã³ãã³ãã®å€æŽãã¹ãã£ã³ããŠãã¡ã€ã«èªäœã«åºã¥ããŠæŽæ°ããããšãã§ããŸããïŒ å
šäœãšããŠãç§ãã¡ã¯åŸéããŠããããã«èŠããŸãã ä»ããK8sã®ãµããŒããæå
¥ãããšã矀ããéãã«èœãšãããã®ã«ååãªäœ¿çšéã倱ããŸã§ãã€ãã§çŸ€ããè¡°ããã®ã§ã¯ãªãããšæããŸãã
ãŸããFWIWãæ§æã¯å®éã®æ§æã®ç§ã®çµéšã§ã¯æ¬åœã«å£ã£ãŠããŸãã ç§ã¯/application/config.confããœãŒã¹ã«å«ããããšãã§ãããšæ³åããŠããŸããïŒæåŸ ããŠããŸããïŒã ãã®ãã¡ã€ã«ãæŽæ°ããã³ããããããã·ã¥ãããšãCIã¯æ°ããæ§æã§ã¹ã¿ãã¯ãåãããã€ããŸãã ããã¯ããã¡ã€ã«åããã®ä»ã®ã¡ã«ããºã ãå€æŽããããã®ããã«ãŒãªãã§ã¯äžå¯èœã§ãã
@ntwrkguruç°¡åãªåé¿çã¯ããã¡ã€ã«åã§ã¯ãªããæ§æèªäœã®ååãå€æŽããããšã§ãã æ§æåã«ããŒãžã§ã³ã¹ããŒã ãæ¡çšããŸãããäŸïŒ config_v1
ã config_v2
ã..
ãããã£ãŠãæ§æãã¡ã€ã«ãå€æŽããåŸã¯ããã®ããŒãžã§ã³ãæŽæ°ããããšãå¿ããªãã§ãã ããã
services:
app:
[...]
configs:
- source: config_v2
- target: /config.yml
configs:
config_v2:
file: ./config.yml
ããŒãžã§ã³ç®¡çãããæ§æãšã·ãŒã¯ã¬ããããŸã ãªãçç±ãç解ããŠããã®ã§ãå人çã«ã¯çŸåšããã®ïŒç°¡åãªïŒåé¿çã§åé¡ãããŸããã
@djmazeã«æè¬ããŸããããã¹ãŠã®ãœãŒã¹ç®¡çã·ã¹ãã ã«åºæã®ããŒãžã§ã³è¿œè·¡ãçµã¿èŸŒãŸããŠããå Žåãããã¯æçµçã«ã¯ã°ãããããšã§ãã ãŸãããªã³ã¯ãããããšãã ç§ãããã«ã³ã¡ã³ãããŸããã DockerãçŸåšã®ããŒãžã§ã³ä»¥å€ã®ããŒãžã§ã³ãæ°ã«ããçç±ãããããŸããã ããããããŒãžã§ã³ç®¡çããå¿ èŠããããšç§ãå€æããå¯äžã®çç±ã¯ããŒã«ããã¯ã®ããã§ããããšã«ããããã«ãããããã®ããšã远跡ããå¿ èŠãããã®ã§ãããã«ããã€ãäœããããŸããïŒ ïŒã³ãŒããæžãå¿ èŠããªã人ã¯èšãïŒ:-)
ãããè©ŠããŠïŒ
echo "$(docker-compose -f stack.yml config 2>/dev/null)" | docker stack deploy -c- stack_name
docker-composeã䜿çšããŠæ§æãã¡ã€ã«ã解æããenv varsã«çœ®ãæããŠãåºåããèŠåãåãé€ããstdinãä»ããŠdocker stackdeployã«ãã€ãããŸãã
'-f stack.yml'ãæ§æãã¡ã€ã«ã®ååã«çœ®ãæããããçç¥ããŠããã©ã«ãã®docker-compose.ymlã䜿çšããŸãã
+1
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
ãçæããŸãã
1幎åŸããŸã ãããããã¯ããŠæ©èœãããå¿ èŠããããŸãã 17.09.1ã®æç¹ã§ãdocker stack deploy -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
ããããšããããããã¡ã€ã«ããã®å€æ°çœ®æãåã«ãµããŒãããããšã«ã€ããŠäœãèšèã¯ãããŸããïŒ
[ç·šé] Ansibleã䜿çšããŠbecome: yes
ã§ã¿ã¹ã¯ãå®è¡ããŠããã®ã§ãããã¯åé¡ã«ã¯ãªããªãã¯ãã§ãïŒãã ããåé¡ã«ãªãå¯èœæ§ããããŸãïŒãããŠãŒã¶ãŒã¯ç°å¢å€æ°ãååŸããã®ãšåããŠãŒã¶ãŒã§ãã
ãããäžå¯èœã ãšã¯ä¿¡ããããŸããã åäžã®ã¹ã¿ãã¯ãã¡ã€ã«ãä¿æããåçå€æ°ã䜿çšããŠå±éãªãã·ã§ã³ãå€æŽã§ããããã«ããããšèããŠããŸãã
ããã¯æ©èœããŸãããéããŠããã¯ã§ãïŒ
echo "$(docker-compose -f stack.yml config 2>/dev/null)" | docker stack deploy -c- stack_name
ç§ã¯ãããäœæéãããã£ãŠããŠããããã®ããŸããŸãªéšåããDABãã¡ã€ã«ãäœæããããã«ããã€ãã®ããã¯ã°ã©ãŠã³ãã¹ã¯ãªããäœæ¥ïŒãããè¡ãããã«CIã䜿çšããŸãïŒãè¡ã£ãŠããããã«èŠããŸãã ãããè¡ãDockerããŒã«ããããšäŸ¿å©ã§ã... :-) docker-compose bundle
ã«--env-file version.env
ãè¿œå ãããããããŸãããïŒ
ç§ã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ã 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
ãã§ããã¯ãã§ãããä»ã¯äžå¯èœã ãšæããŸãã ãã®å ŽåãDABãã¡ã€ã«ããããŒãžã£ãŒã«scpããŠã docker deploy
ãå®è¡ããŸãã
ããã¯ãDockerã@thaJeztahã§å¿µé ã«çœ®ããŠããã¯ãŒã¯ãããŒã§ããïŒ ãã£ãšè¯ãæ¹æ³ã¯ãããŸããïŒ
[ç·šé] DABã¯volume:
ã network:
ãããã³deploy:
ãã£ã¬ã¯ãã£ããç¡èŠãããããããã¯æ©èœããŸããã åçŽã«envãã¡ã€ã«ãã·ã§ã«ã«ãœãŒã·ã³ã°ããäžæäœæãã¡ã€ã«ãåæ§ç¯ããŠãããããããããã€ããããšã«ããŸããã
.env
ãã¡ã€ã«ãDocker Composeã®ããã«ããã©ã«ãã§èªã¿åããã --env-file
ïŒçã-e
ïŒãdocker stack deploy
ã«è¿œå ãããŠããªãŒããŒã©ã€ãã§ããããã«ãªããšããã®ã§ããã .env
ãã¡ã€ã«ã®ç°å¢å€æ°ãšããã©ã«ãã
+1
docker-composeã®ããã«ãæåã«.envãèªã¿åããšéåžžã«äŸ¿å©ã§ãã
ããã©ã«ãã§ããŸãã¯åã«envãã¡ã€ã«ãdockerstackã³ãã³ãã©ã€ã³ã®ãã©ã¡ãŒã¿ãŒãšããŠæž¡ããŸãã
ææ¡ããããä¿®æ£ããšæ¯èŒãããšå°ãéãã§ããããã§ã«è¿°ã¹ã2ã€ã®åé¿çïŒ_以äžã§ãèŠã€ãã_ïŒã¯æ©èœããŠããããã§ãã
_echo "$ïŒdocker-compose -f stack.yml config 2> / dev / nullïŒ" | docker stack deploy -c- stack_name_
_env $ïŒcat .env | grep ^ [AZ] | xargsïŒdocker stack deploy --compose-file docker-compose.yml [STACK_NAME] _
ãããã®å€æ°ãåŠçã§ããããã«ããããã ãã«docker-composeãã€ã³ã¹ããŒã«ããããšããå®éã«ã¯éåžžã«å±éºã§ããå¯èœæ§ãããããšãä»ãå ããŠãããŸãã
docker stack deployã䜿çšãã代ããã«ã誀ã£ãŠdocker-compose up -dã䜿çšããŠã¹ã¿ãã¯ããããã€ãããšãã¢ããªã±ãŒã·ã§ã³ãšã©ãŒããã¡ã€ã«ã®ç Žæãçºçããå¯èœæ§ããããŸãã
ãããã€æã«ç°å¢å€æ°ã®è£éãè¡ãããšã¯ãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã«æé©ãªãœãªã¥ãŒã·ã§ã³ã§ãã
'.env'ã®äœ¿çšã«é¢ããåé¡ã®1ã€ã¯ãããšãã°Ruby on Railsã§äœ¿çšãããåæ§ã®ãã¡ã€ã«åãšéè€ããåŒæ°ã§ç°å¢ãã¡ã€ã«ãæå®ããæ©èœãåªããŠããããšã§ãã
@ntelisilã®ææ¡ã¯ããç解ãããŠããã次ã®æ¹æ³ã§è£è¶³ãŸãã¯å€æŽã§ããŸãã
envsubstïŒgnu gettextã®äžéšïŒã䜿çšã§ããŸãã
envsubst <infile
ç§ã䜿çšããïŒ
$ envsubst < docker-compose.yml-template > docker-compose.yml
ããã¯ããŸããããŸããããã³ã³ããã«3MbçšåºŠãè¿œå ããå¿ èŠããããŸããã
çŽ æŽããã@rnickleã§ãããDockerã以åã®æ¹æ³ã§ãããå®è¡ã§ããã®ãšæ¯èŒãããšãããã§ããããããŒãã§ãã K8sãµããŒãã®çºè¡šä»¥æ¥ãã¹ãŠã©ãŒã ã¢ãŒãã«å ¥ãäœæ¥ã¯ã»ãšãã©ãªãããã§ãïŒãããŠãDockerãééã£ãŠããå Žåã¯èšæ£ããŠãã ããïŒããããã£ãŠããããã®ãªã°ã¬ãã·ã§ã³ã®ããããã«å¯ŸåŠã§ãããã©ããã¯çãããã§ãã
ããã¯ããŸããããŸããããã³ã³ããã«3MbçšåºŠãè¿œå ããå¿ èŠããããŸããã
ç°å¢å€æ°ãèšå®ãããŠããå Žåã docker slack deploy
ã¯ãã§ã«ããããè£éããŠããã¯ãã§ã
Dockerã以åã®æ¹æ³ã§ãããå®è¡ã§ããã®ãšæ¯èŒããŠã
Dockerã«ã¯ãã®æ©èœã¯ãããŸããã§ããã dockercomposeãæã£ãŠãã; dockercomposeãšdockerstack deployã¯_fileformat_ãå ±æããŸãããå¿ ããããœãããŠã§ã¢èªäœã®ãã¹ãŠã®åäœãå ±æããããã§ã¯ãããŸããã
K8sãµããŒãã®çºè¡šä»¥æ¥ãã¹ãŠã©ãŒã ã¢ãŒãã«å ¥ãäœæ¥ã¯ã»ãšãã©ãããŸããã
äœæãã¡ã€ã«ã®åŠçã¯ãã¹ãŠã¯ã©ã€ã¢ã³ãåŽã§è¡ãããk8sãšswarmkitã®äž¡æ¹ã§äœ¿çšãããããããã®é åã§é床ãäœäžããããšã¯ãããŸããã
ãã®æ©èœãåŸ
ã£ãŠãã人ã®ããã«; ä»åŸã®ãªãªãŒã¹ã§ã¯ã docker stack deploy
ã®è€æ°ã®äœæãã¡ã€ã«ããµããŒãããããããçŸåšdocker composeã§ãã®æ©èœã䜿çšããŠããå Žåã¯ã次ã®DockerãªãªãŒã¹ã§ãããããµããŒããããŸãã
ã»ãã³ãã£ã¯ã¹ã¯ããŠãããæŽæ°ããŠãããŠããããšãã Dockerãšèšããšããç§ã¯å¿ ãããããŒã¢ã³ããšã³ãžã³ãæå³ããã®ã§ã¯ãªããããŒã«ãæ§ç¯ããäŒç€Ÿãæå³ããŸãã åªåãã»ãšãã©ãªããšããã³ã¡ã³ãã®èµ·æºã¯ãã¹ãŠã©ãŒã ã¢ãŒãã1幎以äžäœ¿çšãããŠããããcomposeã䜿çšããã·ã³ã°ã«ããŒãã®å Žåãããã¯ããã«é ããŠãããšããäºå®ã«ç±æ¥ããŠããŸãã
ãããã¯ç°ãªã£ãŠããããåããã¡ã€ã«åœ¢åŒã䜿çšããŠããããšã¯ç解ã§ããŸããããŠãŒã¶ãŒã矀ãã䜿çšããããã«æ©èœã亀æããå¿ èŠãããããšã«æ°ä»ããå Žåãå®éã«ã¯æ··ä¹±ãçãã倱æããå¯èœæ§ããããŸãã ãããšDABãã¡ã€ã«ããŸã å®éšçãªãã®ãšããŠãªã¹ããããŠãããšããäºå®ã æ®å¿µãªãããç§ãã¡ã¯å€§ããªãããžã§ã¯ãã§swarm-modeã䜿çšããããšã決å®ããŸãããããããªããšãç§ãæ°ã«ããŸããã 幞ããªããšã«ãç§ãã¡ã¯ãã®ééããäºåºŠãšç¯ããŸããã
[ç·šé]
ç°å¢å€æ°ãèšå®ãããŠããå Žåãdocker slackdeployã¯ãã§ã«ããããè£éããŠããã¯ãã§ã
CIç°å¢ã§ãããè¡ãããšã¯ãç宀ã®èŠçã§ãã åºæ¬çã«ãcomposeãã€ã³ã¹ããŒã«ããenvvarsããœãŒã·ã³ã°ããcomposeãã¡ã€ã«ãïŒã€ã¡ãŒãžããã«ããåŸïŒæŽãæµããŠããã stack deploy
ã§äœ¿çšããããã«æ°ããcomposeãã¡ã€ã«ãåãåºãããšã«ãªããŸããã ïŒãããŠããã®åé¡ã¯ç¹ã«å€æ°ã®è£éã«é¢ãããã®ãªã®ã§ã :latest
ïŒ$ãã¹ãŠã©ãŒã ã¢ãŒãã§:latest
ãæå³ããªãå Žåããããã©ãã»ã©èŠçã§ãããã«ã€ããŠã¯å§ããŸãããïŒ
_ç·šéïŒãã®æçš¿ãç©æ¥µçã«åºããããªãããšãé¡ã£ãŠããŸãã ç§ã¯DockerStackã®æŠå¿µã倧奜ãã§ãDockerã¹ã€ãŒãå šäœãããªããããµããŒããããŠãããšæããŸãã DockerïŒçµç¹ïŒã¯çŸåšããŠãŒã¶ãŒãšåãããã«è£œåã衚瀺ããŠããªãããã§ããããã¯æ®å¿µãªããšã§ãããComposeãšStackã䜿çšããŠééããã»ãšãã©ã®åé¡ã®åå ã§ããããã§ãã_
Dockerã«ã¯ãã®æ©èœã¯ãããŸããã§ããã dockercomposeãæã£ãŠãã; dockercomposeãšdockerstack deployã¯ãã¡ã€ã«åœ¢åŒãå ±æããŸãããå¿ ããããœãããŠã§ã¢èªäœã®ãã¹ãŠã®åäœãå ±æããããã§ã¯ãããŸããã
ãã®ã¹ããŒãã¡ã³ãã¯ãDockerã®éçºè ãšãŠãŒã¶ãŒããããã®è£œåãèŠãæ¹æ³ã®éã®æ ¹æ¬çãªæ絶ãæããã«ããŠããããã«æããŸãã ãŠãŒã¶ãŒãšããŠãDocker EngineãDocker ComposeãDocker Swarmã®ãããã䜿çšããŠããŠãããã¹ãŠDockerã§ãããå¯èœãªéãäžè²«ããŠåäœããå¿ èŠããããŸãã
ãããã®è£œåã®ç®çã«ã€ããŠã®ç§ã®ç解ã¯æ¬¡ã®ãšããã§ãã
DockerïŒããã³äžè¬çãªã³ã³ãããŒïŒã®äž»ãªã»ãŒã«ã¹ãã€ã³ãã®1ã€ã¯ãè€æ°ã®ç°å¢ã§åãã¢ããªãç°¡åã«åå©çšã§ããããšã§ãã ãããã£ãŠãäœæã¯ãšã³ãžã³ã«è¿œå ããå¿ èŠããããã¹ã¿ãã¯ã¯äœæã«è¿œå ããå¿ èŠããããŸãã ç¹ã«ãåããã¡ã€ã«åœ¢åŒãå ±æãããããã¹ã¿ãã¯ãComposeã®æ©èœããµããŒãããŠããªããšãéçºè ãæ··ä¹±ããCIããã»ã¹ãè€éã«ãªããŸãã
å¿ ããããcomposeãdevçšã§ãstackãprodçšã§ãããšã¯èšããŸããã ç§ã¯ãcomposeããã«ãã³ã³ãããŒã¢ããªã±ãŒã·ã§ã³ãŸãã¯ãã·ã¹ãã ãçšã§ãããã¹ã±ãžã¥ãŒã©ãŒ/ãªãŒã±ã¹ãã¬ãŒã¿ãŒãšããŠswarm-modeã䜿çšãããã«ããã¹ããããã€ã¡ã³ãçšã®ã¹ã¿ãã¯ã§ãããšèããŠããŸãã ãã以å€ã®å Žåãããªãã®ã³ã¡ã³ãã¯100ïŒ ã¹ãããã§ãã ãŸãã補åãã©ã®ããã«äœ¿çšãããŠãããã«ã€ããŠãéçºè ãšãŠãŒã¶ãŒã®éã«æ絶ãããããšã«äžæºãæããŠããŸãïŒä»ã®ã³ã¡ã³ãã§æããã§ãªãã£ãå ŽåïŒã
ãããããã 倧ããªãããžã§ã¯ãã§ãDockerSwarmãè©äŸ¡ããŠãããšãã«ãæ··ä¹±ãšèŠçã«å ãããŸããã
ã·ãŒã¯ã¬ããã¯ãã¹ãŠæ¥œãããŠã²ãŒã ã§ããããã¹ãŠã®å€éšDockerã€ã¡ãŒãžããã¡ã€ã«ããã®ã·ãŒã¯ã¬ããã®èªã¿åãããµããŒãããŠããããã§ã¯ãããŸããã ãããããå€æŽããŠã«ã¹ã¿ã ã€ã¡ãŒãžãé
眮ããããããŸããã ã¯ããç§ã®ãããžã§ã¯ãã«ãããã䜿çšãããããããŸããããå€éšãããžã§ã¯ãã«ã¯äœ¿çšã§ããŸããã
ã€ãŸããenvå€æ°ãæ®ããŸãã ãããããã圌ãã¯äœæ²ããšã«ç°ãªã£ãæ¯ãèããããŸãïŒ ããããå®éã«ã¯æ©èœããªãããšã«æ°ä»ãããšãã®é©ããæ³åããŠã¿ãŠãã ããã
envãµããŒããªãã§dockerã¹ã¿ãã¯ãäœæããã«ã¯ã©ãããã°ããã§ããïŒç§ã®æèŠã§ã¯--env-file = dev.envã§ãããããä»ã®envãã¡ã€ã«ã«å¹²æžããŸãã...ããããããã®ãµããŒãã¯ã²ã©ããã®ã§ãã æ®å¿µãªãããk8sã«æ»ããªããã°ãªããŸãããæåãããããæ¬ èœããŠããã¹ã¿ãã¯ã¯ãä»ã«ããã€æ¬ èœããŠããã®ããç¥ã£ãŠããæ¬çªç°å¢ã§ã¯ãæãããéžæã«ãªãå¯èœæ§ããããŸãã
ïŒå¹Žçµã¡ãŸããããä»ã§ãããã§ãâŠå€±ç€Œã«åºããããããªãã®ã§ãããæ¯éïŒ docker-composeã®ã³ãŒããå°ãåå©çšããå¿ èŠããããŸãã
ç§ãééãããã1ã€ã®åæ§ã®åé¡ã¯ãenv_fileã䜿çšããŠããåäœããŸã£ããåãã§ã¯ãªããšããããšã§ãã
env_fileã䜿çšããŠããããžã§ã¯ãã«ãŒãããæå®ããããã¹ãããŒãããŸãããäœæãã¡ã€ã«ã¯å¥ã®ãµããã£ã¬ã¯ããªã«ãããŸãã docker-composeã§èµ·åããã«ã¯ã-project-directoryã䜿çšããŸãã -f path / to / docker-compose.yml
docker stack
ã§ã¯ãããžã§ã¯ããã£ã¬ã¯ããªãæå®ã§ããªãããããã¹ãŠã®env_fileã®èªã¿èŸŒã¿ã«å€±æããŸãã
env_fileã "../../path/to/envrc"ã«å€æŽããŠããdocker-composeã§ã¯æ©èœããŸããããããã®ãã¡ã€ã«ã¯ãããžã§ã¯ãã®ã«ãŒããã£ã¬ã¯ããªå ã«ããå¿ èŠãããããã§ãã
+1
+1
+1ããã¯æ¬åœã«äŸ¿å©ã§ãã ãã€ãã¹é¢ã¯ããŸãèŠãªãã§ãã ããã
dockerãããããŸã ãµããŒãããŠããªãã®ã¯ä¿¡ããããªãã»ã©æãã§ãã
+1 @ joao-fidalgo確ãã«ããã§ãã
+1
ç§ãã¡ã矀ããè©ŠããŠããã®ãšåãããšã«ééããŸããã ç§ã¯ããŸããŸãªã¹ã¬ããã®ãã¹ãŠã®ã¡ãã»ãŒãžãèªã¿ãŸããããéåžžã«ã€ã©ã€ã©ããŠããŸãã IMOãããã€ãã®æ¬åœã«è¯ãç¹ãšåŒ·ãè°è«ã@ntwrkguruãšä»ã®äººã«ãã£ãŠãªãããŸããã ç§ãã¡ã¯ã圌ãããã®æ©èœãåãå ¥ããããšãæ€èšã§ããããšãé¡ã£ãŠããŸãã ããã¯ã¯ãããã«ããããŸããã
.envãã¡ã€ã«
export MYSQL_USER=user
source .env && docker stack deploy
ãŸããbashã®docker-compose up
ã§ãæ©èœããŸã
.envãã¡ã€ã«
export MYSQL_USER=user
source .env && docker stack deploy
docker-compose up
ã§ãåäœããŸã
ããã¯bashã§ã®ã¿æ©èœããä»ã®ã·ã§ã«ã§ã¯æ©èœããŸããã
ããã¯ç§ãçã£ãããã«æ··ä¹±ãããŸããã ç§ã®ã¢ããªã¯docker-composeã䜿çšããŠèµ·åããŸãããdocker stackdeployã§ã¯èµ·åããŸããã å°ãªããšããããã¥ã¡ã³ãã«ç®ç«ã€ããã«è¡šç€ºãããŠããå 責äºé ãããã¯ãã§ã
ããããIMOã¯ããããã°ã§ãããDockerãšã¯ã¹ããªãšã³ã¹ãäœäžãããŠããŸãã
ããã«ã€ããŠã®çããå¿ èŠã§ã
ã»ãŒ2幎ã誰ããããæã«å ¥ããŠããŸãã...æ¯ãæ¢ããªãã§ãã ãã@jorgelimafeitosa
CLIã.env
ã®ãµããŒããè¿œå ããããšã¯ãªããšæããŸãã docker stack deploy
ã³ãã³ãã¯ãããšããšåæ£ã¢ããªã±ãŒã·ã§ã³ãã³ãã«ãã¡ã€ã«ã念é ã«çœ®ããŠäœæãããŸããïŒãããã£ãŠã --bundle-file
ãªãã·ã§ã³ïŒã DABãã¡ã€ã«ã¯ãDockerComposeã«ãã£ãŠdocker-compose bundle
ã³ãã³ãã䜿çšããŠçæãããŸããã .env
ããã³ãã®ä»ã®äœææ©èœã¯ã docker stack deploy
ã«æž¡ãããåã«ã docker-compose
ã«ãã£ãŠåŠçãããŸãã docker stack deploy
ã§ã®ãã¡ã€ã«ã®äœæã®çŽæ¥ãµããŒãã¯ãåžžã«åŠ¥åç¹ã§ããã
DABãã¡ã€ã«ã®åœåã®çŽæã¯ãçŸåšã .env
ãåŠçããªãDockerã¢ããªã§æå¹ã§ãã
éçºè
ã«docker-compose config
ã䜿çšããŠãDocker Composeãããžã§ã¯ããdocker stack deploy
ã«æž¡ãåã«ååŠçããŠããããŸãã ããã¯ã次ã®æ¹æ³ã§1è¡ã§å®è¡ã§ããŸãã
docker stack deploy -c <(docker-compose config) stack-name-here
ãã®ããã«ããŠã .env
åŠçãå«ããã¹ãŠã®DockerComposeæ©èœãå®å
šã«é©çšãããŸãã
@kinghuangãœãªã¥ãŒã·ã§ã³ãè©ŠããŸããããæ©èœããŸããã§ããã ãdocker-composeconfigãã¯åããã£ã¬ã¯ããªã«æ£ããåºåãçæããŸããããdocker stack deploy -c docker-compose.yamlmy_stackãã¯.envã®å€æ°ã眮ãæããŸããã ç§ã¯äœãæ¬ ããŠããŸããïŒ ããã¯DockerããŒãžã§ã³18.09.0ããã«ã4d60db4ã§ãã
@kinghuangãœãªã¥ãŒã·ã§ã³ãè©ŠããŸããããæ©èœããŸããã§ããã ãdocker-composeconfigãã¯åããã£ã¬ã¯ããªã«æ£ããåºåãçæããŸããããdocker stack deploy -c docker-compose.yamlmy_stackãã¯.envã®å€æ°ã眮ãæããŸããã ç§ã¯äœãæ¬ ããŠããŸããïŒ ããã¯DockerããŒãžã§ã³18.09.0ããã«ã4d60db4ã§ãã
docker stack deploy -c <ïŒdocker-compose -f docker-compose-frpc-swarm-traefik.yml configïŒtraefik
@kinghuang
/ dev / fd / 63ãéããŸãïŒãã®ãããªãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªã¯ãããŸãã
èŠåïŒäžéšã®ãµãŒãã¹ïŒproject1ãproject2ïŒã¯ 'deploy'ããŒã䜿çšããŸãããããã¯ç¡èŠãããŸãã Composeã¯ãdeployãæ§æããµããŒãããŠããŸãã- docker stack deploy
ã䜿çšããŠçŸ€ãã«ãããã€ããŸãã
@kinghuang
ã«ãŒãç°å¢ã®ã¿ããšã©ãŒãå ±åããŸããã
.env
ãšenv_file
ããµããŒãããããšã¯ããããã€ã¡ã³ã/æ¬çªç°å¢ã§ã¯å¿
ãããæå³ããããŸããã Docker Swarmã®ä»ã®æ©èœã®ããã«ããã¡ã€ã«ã·ã¹ãã ã«çŽæ¥ã¢ã¯ã»ã¹ããå¿
èŠã¯ãããŸããã ãããã£ãŠããã®ã·ã¹ãã ã®è²¬ä»»ããèšèšè
/ãªãã¬ãŒã¿ãŒã¯ãç°å¢ãã¡ã€ã«ããã¡ã€ã«ã·ã¹ãã ã«ãã³ãããæ©èœãæäŸããããªãã§ãããã
çè«çã«ã¯ãSwarmã¯ç°å¢ãžã®ã·ãŒã¯ã¬ããã®èªã¿èŸŒã¿ãèªåçã«ãµããŒãã§ããŸãããã»ãã¥ãªãã£ã®èŠ³ç¹ãããããé©åã§ãªãçç±ã«ã€ããŠã¯ã httpsïŒ //github.com/moby/moby/issues/30866#issuecomment-278924983ãåç §ããŠãã ããã
ä»æ¥ã§ããããšã¯ãã·ãŒã¯ã¬ããã䜿çšããŠãã³ã³ãããŒã®å®è¡æã«ã¢ããªã®ç°å¢ã«ã·ãŒã¯ã¬ãããããŒãããããšã§ãã ããã«ãããç§å¯ã®ç°å¢å€ã衚瀺ã§ããå Žæãå¶åŸ¡ã§ããŸãã
+1
docker stackdeployã¯å®éã«--env-fileããµããŒãããå¿
èŠããããŸãã
ç§èªèº«ãåã.ymlãã¡ã€ã«ãåå©çšããŠãéçº/ãã¹ã/æ¬çªç°å¢çšã«ç°ãªãã¹ã¿ãã¯ããããã€ããã®ã«èŠåŽããŠããŸããã¹ã¿ãã¯ããããã€ããåã«ãç°å¢å€æ°ã®é¢åãªãšã¯ã¹ããŒã/ãœãŒã·ã³ã°ã«å¯ŸåŠããããããŸããã ããã¯éåžžã«ãšã©ãŒãçºçãããããªããŸãïŒãŸããæ¯åæ£ç¢ºãªã³ãã³ããèŠããã«ã¯a **ãèŠçã«ãªããŸãïŒã
ç§ã®ç¹å®ã®ã±ãŒã¹ã§ã¯ãããšãã°ãç°å¢ããšã«ç°ãªãã€ã³ããã¯ã¹åïŒelasticsearchïŒãèšå®ãããã®ã§ãããæ®ãã®æ§æã¯åããŸãŸã§ãã ããã¯ã以åã®æçš¿ã§è¿°ã¹ãããã«ãç§å¯ããšã¯äœã®é¢ä¿ããããŸããã
äžèšã®ã³ã¡ã³ãå±¥æŽã«åºã¥ããšãDockerã¹ã¿ãã¯ã®ãããã€ã«ã¯--env-fileãæ¬åœã«å¿
èŠãªããã§ãããæ®å¿µãªããDockeréçºè
ã¯ãããèªèããŠããªãããã§ãã
ç§ã®çŸ€ãã®ç°å¢ã§ã¯ãããã€ãã®åé¿çã«èœã¡çããŸããã
docker-compose.ymlã§.envãã¡ã€ã«ãæå®ããã ãã§ã次ã®ããã«æ©èœããŸãã
env_file:
- .env
https://stackoverflow.com/questions/44694640/docker-swarm-with-image-versions-externalized-to-env-fileãåç §ããŠãã ãã
dockerãåŒã³åºãåã«.envãã¡ã€ã«ã解æããããã«Windowsã§äœ¿çšããPowerShellã®åé¿çïŒ
switch -regex -file "./ãenv" {"^ \ s ïŒ[^ïŒ]ã+ïŒïŒ\ s = \ s ïŒã ïŒ" {$ nameã$ value = $ matches [1..2]; Set-Item "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 stackdeployã§ã¯æ©èœããŸããã
èå³ããªãã 人ã ã¯çŸåšãã¹ãŠã©ãŒã ã¢ãŒãã§äœãããŠããŠãæ°ããæ§ç¯ãããDockerã€ã¡ãŒãžããããšãã°ãã¢ããªã±ãŒã·ã§ã³ïŒv1ããã¢ããªã±ãŒã·ã§ã³ïŒv2ã«ãåããµãŒãã¹ïŒä»ã«äœãå€æŽãããŠããªãïŒã«æŽæ°ããããšèããŠããŸããïŒ
ãããç§ããã®åé¡ã«åºããããçç±ã§ãã ã ããç§ã¯èå³ããããŸãã
çŸåšdocker-composeã§ã¯ãèªååããŠãœãŒã¹ç®¡çã®è¿œè·¡ãããŠããªããã¡ã€ã«. env
ãæäœããŠç»åããŒãžã§ã³ãæŽæ°ãã次ã«docker-compose up -d
ãæäœããã®ã¯ç°¡åã§ãã
å€ãã®å Žåãã³ãããshaããã¹ããŒãžã³ã°ããããã€ã®Dockerã€ã¡ãŒãžããŒãžã§ã³ïŒååãªãã¹ããµã€ã¯ã«åŸã®å®éã®ãªãªãŒã¹ã«äœ¿çšãããgitã¿ã°ïŒãšããŠäœ¿çšãããããæ°ããã€ã¡ãŒãžããŒãžã§ã³ããœãŒã¹ç®¡çã«ã³ãããããããšã¯å®éã«ã¯äžå¯èœã§ãã
åé¿çãšããŠãDockerã·ãŒã¯ã¬ãããæŽæ°ããããšã¯å¯èœã§ããïŒå®éã«ã¯ã·ãŒã¯ã¬ããã§ã¯ãããŸãããïŒïŒ ããã¯äººã ãããŠããããšãªã®ãããããšãä»ã«äœããããŠããããšãªã®ãã
圌ããæ¢ããŠããæ©èœãïŒãŸã ïŒïŒååšããªãã®ã§ã圌ããå®éã«çŸåšã®ãã¹ããã©ã¯ãã£ã¹ãæãä»ãããã«ãç§ã¯ãã®åé¡ã®å°æ¥ã®èšªåè ãæ±ããŠããŸãã
ããã«ã¡ã¯ãç§ã¯CI / CDãã€ãã©ã€ã³ã§äœ¿çšããããã®ã¹ã¿ãã¯ãããã€ãæ€èšããã®ã«å¿ããã§ãã.envãã¡ã€ã«ã䜿çšã§ããããšã¯éåžžã«äŸ¿å©ã§ãããã®ãªãã·ã§ã³ãããããã®æ®µéã§å°å ¥ããããã©ããã«ã€ããŠã®ãã£ãŒãããã¯ã¯ãããŸããïŒ
å®éãå ¬åŒã®æšå¥šäºé ã¯ãã·ãŒã¯ã¬ããããã¹ããã¡ã€ã«ããã®ãããã®ã¿ã€ãã®å€æ°ã®èªã¿åãããµããŒãããããã«ç»åã³ãŒãã移è¡ããããšã§ãã±éã¹ã¿ãã¯/ã¹ãŠã©ãŒã ã®äžäœäºææ§ã®ããã«ãç°å¢å€æ°ãããããããèªã¿åãæ©èœãä¿æããŸãã
ãã®äŸã§ã¯ãããã¹ããã¡ã€ã«ããšã«1ã€ã®ã·ãŒã¯ã¬ããã䜿çšããŠãããããå€ã.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
ã¯ã
ããã¯ãããã¥ã¡ã³ãã§ããæ確ã«ãªã£ãŠããã¯ãã§ãã @lengxuehxã®VariableSubstitutionã»ã¯ã·ã§ã³ã§ã¯.envããµããŒããããŠããªãããšãææãããŠããŸãããã¹ã¿ãã¯ãããã€ã§env_fileãç¡èŠãããããšã«ã€ããŠã¯èšåãããŠããŸããã
@kinghuangã«ãã£ãŠææ¡ããããœãªã¥ãŒã·ã§ã³ãæ©èœãã誰ããèšã£ãããã«ãããã€ããŒãé€å€ããŠããªãããšã確èªã§ããŸãã
docker stack deploy -c <(docker-compose config) stack-name-here
ããã¯ãããã¥ã¡ã³ãã§ããæ確ã«ãªã£ãŠããã¯ãã§ãã @lengxuehxã®VariableSubstitutionã»ã¯ã·ã§ã³ã§ã¯.envããµããŒããããŠããªãããšãææãããŠããŸãããã¹ã¿ãã¯ãããã€ã§env_fileãç¡èŠãããããšã«ã€ããŠã¯èšåãããŠããŸããã
docker composeãšãŸã£ããåãããã«ãenv_fileã䜿çšãããdeploystackã³ãã³ãã§æ©èœããŠããããšã確èªã§ããŸãã
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
ãã¡ã€ã«ããç°å¢å€æ°ãèšå®ããå¿
èŠããããŸãã ããã€ãã®ãªãã·ã§ã³ãäžã§èª¬æãããŠããŸãã æãç°¡åãªåé¿çã®1ã€ã¯ãããªããã»ããµãšããŠdocker-compose config
ã䜿çšããããšã§ããdocker stack deploy -c <(docker-compose config) STACK_NAME
ã䜿çšããŠã¹ã¿ãã¯ãäœæã§ããŸããdocker-compose.yml
ãã¡ã€ã«ã®env_file
ãã©ã¡ãŒã¿ã¯ã docker-compose.yml
ãã¡ã€ã«èªäœã§ã¯ãªããäœæãããã³ã³ããã«ç°å¢å€æ°ãèšå®ããŸãïŒãããã£ãŠã "ã®ä»£ããã«äœ¿çšããããšã¯ã§ããŸãããå¯å€çœ®æãïŒã@thaJeztahã«ãã£ãŠä¿®æ£ãããŸããã
Dockerã¯ãdocker stack deployã䜿çšããå€æ°çœ®æããµããŒãããŠããããææ¡ããããœãªã¥ãŒã·ã§ã³ã®ããããæ©èœããŸããã
docker stack deploy
ã¯å€æ°çœ®æããµããŒãããŸããã .env
ãã¡ã€ã«ãè©äŸ¡ããŸããã 以äžã®äŸã§ã¯ã HELLO_VERSION
ã¯linux
ã«èšå®ãããŠããããµãŒãã¹ã¯ïŒããã©ã«ãã®hello-world:latest
ã®ä»£ããã«ïŒ hello-world:linux
ã¿ã°ã䜿çšããŸãã
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ãæå®ããŸãããäœæãã¡ã€ã«èªäœã§ã¯äœ¿çšãããŸããïŒãŸããã¹ã¿ãã¯ããããã€ããåã«äœæãã¡ã€ã«ã®å€æ°ã眮ãæããããã«ã¯äœ¿çšãããŸããïŒã
docker-composeãšdockerstackã®éã®ä»ã®ããããªéãã«æ²¿ã£ãŠãåãåé¡ãçºçããŸããã
ãã€ãã§ãã®åé¡ãåŠçããããã«ã httpsïŒ//github.com/egyel/dcsh script / toolãäœæããããšã«ãªããŸããã
ã¿ãªãããããã«ã¡ã¯ãããã¯ãenv_fileãdocker-composeã«é
眮ããã®ã«åœ¹ç«ã¡ãŸããã
env_file: /path/to/env/file
ããã
env_file:
- /path/to/env/file
ç§ã¯å¥ã®æçš¿ãããããèŠãã°ããã§ããªããããæ©èœããã®ããæšæž¬ããããšããã§ããŸããïŒããªãã®æšæž¬ãšåãã§ãïŒããenv_fileãæ©èœããªããšããããã¥ã¡ã³ãã§æ瀺çã«èšåãããŠããdockerãšããŠãããæ©èœããŠããçç±ã確èªããå¿ èŠããããŸãã
ç§ã®ç解ã§ã¯ãenvãã¡ã€ã«ã䜿çšããŠãã¬ãŒã¹ãã«ããŒãå
¥åããããšã¯ã§ããŸãã
docker-stack.ymlãã¡ã€ã«ã§ãããã³ã³ãããŒã«æäŸããããšã¯ã§ããŸãã
ããªããããŠããããšã¯ããªããããç»ååãèšå®ããããšãèš±å¯ããªãããšã«æ³šæããŠãã ãã
ããšãã°ãenvãã¡ã€ã«ã
2020幎5æ17æ¥ã06ïŒ08 [email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
ãç»åïŒç»åã
https://user-images.githubusercontent.com/30310576/82135555-a1e4be00-9836-11ea-9df4-a1b82e014b0e.png
ã¿ãªãããããã«ã¡ã¯ãããã¯ãenv_fileãdocker-composeã«é 眮ããã®ã«åœ¹ç«ã¡ãŸãããenv_fileïŒ/ path / to / env / file
ãããenv_fileïŒ
- / path / to / env / file
ç§ã¯å¥ã®æçš¿ãããããèŠãã ãã§ããªããããæ©èœããã®ãæšæž¬ããããšããã§ããŸãã
ïŒããªãã®æšæž¬ãšåãã§ãïŒããããããããªãã§ãããã«ã€ããŠã®ç¢ºèªãå¿ èŠã§ã
env_fileãããªãããšãããã¥ã¡ã³ãã§æ瀺çã«èšåããdockerãšããŠæ©èœãã
ä»äºãâ
ã³ã¡ã³ãããã®ã§ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/moby/moby/issues/29133#issuecomment-629740002 ããŸãã¯
ç»é²ã解é€ãã
https://github.com/notifications/unsubscribe-auth/ABHLQMCARDQGJQIBWCQKAYLRR5PMHANCNFSM4CYRHCTA
ã
äžèšã®docker-composeãœãªã¥ãŒã·ã§ã³ïŒ
docker stack deploy -c <(docker-compose config) stack-name-here
ïŒç§ã«ãšã£ãŠïŒ .env
ãã¡ã€ã«ã®ãããªãã®ãç¹ã«docker-compose.override.yml
ãã¡ã€ã«ã¯éåžžç§ã®éçºç°å¢ã®äžéšã§ãããšããæ¬ ç¹ããããŸãã æ¬çªç°å¢ã«ãããã€ãããšãã«ãããããæã¡èŸŒãŸãªãããã«ããŸãã
ããã€ãã®éè€ããã£ããšããŠããç§ã¯ç©äºã泚ææ·±ãå¶åŸ¡ããå¥ã®docker-compose-production.yml
ãæã€ããšã«ãªããŸããã
CLIã
.env
ã®ãµããŒããè¿œå ããããšã¯ãªããšæããŸããdocker stack deploy
ã³ãã³ãã¯ãããšããšåæ£ã¢ããªã±ãŒã·ã§ã³ãã³ãã«ãã¡ã€ã«ã念é ã«çœ®ããŠäœæãããŸããïŒãããã£ãŠã--bundle-file
ãªãã·ã§ã³ïŒã DABãã¡ã€ã«ã¯ãDockerComposeã«ãã£ãŠdocker-compose bundle
ã³ãã³ãã䜿çšããŠçæãããŸããã.env
ããã³ãã®ä»ã®äœææ©èœã¯ãdocker stack deploy
ã«æž¡ãããåã«ãdocker-compose
ã«ãã£ãŠåŠçãããŸããdocker stack deploy
ã§ã®ãã¡ã€ã«ã®äœæã®çŽæ¥ãµããŒãã¯ãåžžã«åŠ¥åç¹ã§ãããDABãã¡ã€ã«ã®åœåã®çŽæã¯ãçŸåšã
.env
ãåŠçããªãDockerã¢ããªã§æå¹ã§ããéçºè ã«
docker-compose config
ã䜿çšããŠãDocker Composeãããžã§ã¯ããdocker stack deploy
ã«æž¡ãåã«ååŠçããŠããããŸãã ããã¯ã次ã®æ¹æ³ã§1è¡ã§å®è¡ã§ããŸããdocker stack deploy -c <(docker-compose config) stack-name-here
ãã®ããã«ããŠã
.env
åŠçãå«ããã¹ãŠã®DockerComposeæ©èœãå®å šã«é©çšãããŸãã
ããã¯é åã®ããã«æ©èœããŸããäœæãã¡ã€ã«ã«ãdocker-compose.ymlããšããååããªãå Žåã¯ãã³ãã³ãã«å®éã®äœæãã¡ã€ã«åãå«ããå¿ èŠãããããšã«æ³šæããŠãã ããã
docker stack deploy -c <ïŒdocker-compose -f CUSTOM-COMPOSE-FILENAME.yml configïŒCUSTOM-STACK
$ <(docker-compose -f CUSTOM-COMPOSE-FILENAME.yml config
ããã¯ã«æ³šæ!!! docker-compose config
ãšdocker-compose -f myfile.yml config
ã®åºåã¯ãå¿
ãããåãã§ã¯ãããŸããã åŸè
ã¯ç°å¢å€æ°ãäœåãªåŒçšç¬Šã§å²ãããšããããããåºåã¯ééã£ãŠããŸãã
äŸïŒ
environment:
SERVER_URL: '"xxx"'
ãã以å€ã®
environment:
SERVER_URL: xxx
ãã®åé¡ã¯ãã§ã«ã©ããã§è¿œè·¡ãããŠããŸããïŒ
æãåèã«ãªãã³ã¡ã³ã
@whoanãããåé¿çãšããŠäœ¿çšããŠããŸãïŒ
ããããã°ãå€æ°ãã¿ãŒããã«ãŠã£ã³ããŠã§ã¹ã¿ãã¯ããããšã¯ãããŸãã