🎃
docker-compose.yml が 正しく書けているか知りたいときの convertコマンド。
エイリアスだったり、.env読み込みだったり。
docker-compose.ymlで色々やろうとすると、正しく書けているか気になりますよね。
そんなときに便利なのが convert コマンド。
もう簡単にoutputしてくれるだけなんですが、幸せです。
例えば、こんなの書きました
version: "3.9"
x-TZ:
&TZ
TZ: 'Asia/Tokyo'
services:
next:
build:
context: ../..
dockerfile: docker/development/Dockerfile
volumes:
- ../..:/app
working_dir: /app
environment:
CHOKIDAR_USEPOLLING: true
<<: *TZ
postgres:
image: postgres:14-alpine
environment:
POSTGRES_USER: ${DB_NAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: ${DB_NAME}
<<: *TZ
ports:
- 5432:5432
volumes:
- ./postgres/data:/var/lib/postgresql/data
例によってエイリアスとenv読み込みをやっています。あんまり便利に使えてません。
感じますよね。ああ不安、.envファイル読めているの?エイリアスは正しく書けてる?
convert使うだけです。ちょっとsyntax変わっちゃいますよ。
docker compose -f docker/development/docker-compose.yml convert
WARN[0000] The "DB_PASSWORD" variable is not set. Defaulting to a blank string.
name: development
services:
next:
build:
context: /root
dockerfile: docker/development/Dockerfile
environment:
CHOKIDAR_USEPOLLING: "true"
TZ: Asia/Tokyo
networks:
default: null
volumes:
- type: bind
source: /root/
target: /app
bind:
create_host_path: true
working_dir: /app
postgres:
environment:
POSTGRES_DB: postgres
POSTGRES_PASSWORD: ""
POSTGRES_USER: postgres
TZ: Asia/Tokyo
image: postgres:14-alpine
networks:
default: null
ports:
- mode: ingress
target: 5432
published: "5432"
protocol: tcp
volumes:
- type: bind
source: /root/docker/development/postgres/data
target: /var/lib/postgresql/data
bind:
create_host_path: true
networks:
default:
name: development_default
x-TZ:
TZ: Asia/Tokyo
あ、.env読めてるけど、POSTGRES_PASSWORDが定義できてないわ。
Discussion