여러 줄의 환경 변수 형식을 적절하게 도커 구성하려면 어떻게 해야 합니까?
도커 작문을 했다.wp-config.php 파일에 몇 가지 커스텀 상수를 자동으로 추가하고 싶다.
공식 이미지 지침을 따르면 다음과 같이 끝납니다.
### Web Application
wordpress:
container_name: 'wordpress'
image: 'wordpress:php7.2-fpm-alpine'
user: 1001:1001
environment:
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_USER=something
- WORDPRESS_DB_NAME=something
- WORDPRESS_DB_PASSWORD=xxxxxxxxxxxxxxx
- WORDPRESS_DEBUG=1
- WORDPRESS_CONFIG_EXTRA=
define( 'WP_REDIS_CLIENT', 'predis' );
define( 'WP_REDIS_SCHEME', 'tcp' );
define( 'WP_REDIS_HOST', 'redis' );
define( 'WP_REDIS_PORT', '6379' );
define( 'WP_REDIS_PASSWORD', 'xxxxxxxxxxxxxxx' );
define( 'WP_REDIS_DATABASE', '0' );
define( 'WP_REDIS_MAXTTL', '21600' );
define( 'WP_CACHE_KEY_SALT', 'xx_ ');
define( 'WP_REDIS_SELECTIVE_FLUSH', 'xx_ ');
define( 'WP_AUTO_UPDATE_CORE', false );
volumes:
- ./wordpress:/var/www/html
- ./logs/php:/var/logs/php
- ./config/php/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
networks:
- frontend
- backend
restart: always
depends_on:
- mysql
모든 것이 작동하지만, 왜 wp-config가 생성되었는지 알 때까지 OCD는 쉴 수 없습니다.php는 다음과 같습니다.WORDPRESS_CONFIG_EXTRA 상수는 한 줄로 연결됩니다.
// WORDPRESS_CONFIG_EXTRA
define('WP_REDIS_CLIENT', 'predis'); define('WP_REDIS_SCHEME', 'tcp'); define('WP_REDIS_HOST', 'redis'); define('WP_REDIS_PORT', '6379'); define('WP_REDIS_PASSWORD', 'xxxxxxxxxxxxxxx'); define('WP_REDIS_DATABASE', '0'); define('WP_REDIS_MAXTTL', '21600'); define('WP_CACHE_KEY_SALT', 'xx_'); define('WP_REDIS_SELECTIVE_FLUSH', 'xx_');
..각 상수가 새로운 행에 있는 형식으로 포맷되어 있어 읽기 쉬움:
// WORDPRESS_CONFIG_EXTRA
define('WP_REDIS_CLIENT', 'predis');
define('WP_REDIS_SCHEME', 'tcp');
define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_PORT', '6379');
define('WP_REDIS_PASSWORD', 'xxxxxxxxxxxxxxx');
define('WP_REDIS_DATABASE', '0');
define('WP_REDIS_MAXTTL', '21600');
define('WP_CACHE_KEY_SALT', 'xx_');
define('WP_REDIS_SELECTIVE_FLUSH', 'xx_');
특히 WORDPRESS_CONFIG_EXTRA 변수와 같은 여러 줄의 환경변수가 도커 컴포지트 파일에서 어떻게 처리되는지 안내해 주실 수 있습니까?
나는 노력했다.WORDPRESS_CONFIG_EXTRA: |
그리고.WORDPRESS_CONFIG_EXTRA: |-
하지만 아무도 내 생각대로 되지 않았어
첫 번째 예에서는 문서의 첫 번째 시퀀스의 마지막 요소는 여러 줄에 걸쳐 있는 일반 스칼라(즉, 단일 따옴표 또는 이중 따옴표 없음)입니다.일반 스칼라에서는 새 라인은 공백으로 대체됩니다(그리고 빈 라인은 새 라인으로 대체됩니다).
따라서 해당 요소 내에서 새 줄을 사용할 경우 사용해야 합니다(관련된 부분만 표시).
- WORDPRESS_DB_PASSWORD=xxxxxxxxxxxxxxx
- WORDPRESS_DEBUG=1
- WORDPRESS_CONFIG_EXTRA=
define( 'WP_REDIS_CLIENT', 'predis' );
define( 'WP_REDIS_SCHEME', 'tcp' );
define( 'WP_REDIS_HOST', 'redis' );
define( 'WP_REDIS_PORT', '6379' );
define( 'WP_REDIS_PASSWORD', 'xxxxxxxxxxxxxxx' );
define( 'WP_REDIS_DATABASE', '0' );
define( 'WP_REDIS_MAXTTL', '21600' );
define( 'WP_CACHE_KEY_SALT', 'xx_ ');
define( 'WP_REDIS_SELECTIVE_FLUSH', 'xx_ ');
define( 'WP_AUTO_UPDATE_CORE', false );
volumes:
- ./wordpress:/var/www/html
또는 다음과 같이 입력합니다.
- WORDPRESS_DB_PASSWORD=xxxxxxxxxxxxxxx
- WORDPRESS_DEBUG=1
- |
WORDPRESS_CONFIG_EXTRA=
define( 'WP_REDIS_CLIENT', 'predis' );
define( 'WP_REDIS_SCHEME', 'tcp' );
define( 'WP_REDIS_HOST', 'redis' );
define( 'WP_REDIS_PORT', '6379' );
define( 'WP_REDIS_PASSWORD', 'xxxxxxxxxxxxxxx' );
define( 'WP_REDIS_DATABASE', '0' );
define( 'WP_REDIS_MAXTTL', '21600' );
define( 'WP_CACHE_KEY_SALT', 'xx_ ');
define( 'WP_REDIS_SELECTIVE_FLUSH', 'xx_ ');
define( 'WP_AUTO_UPDATE_CORE', false );
volumes:
- ./wordpress:/var/www/html
사용.|-
대신|
는 그 요소에서 최종 줄바꿈을 제외합니다.시도하신 내용(WORDPRESS_CONFIG_EXTRA: |
)는 완전히 다른 것입니다.단일 스칼라 요소를 단일 키와 값의 쌍을 가진 매핑으로 분할합니다.
위는 줄바꿈이 포함된 문자열 값으로 로드되지만 도커 컴포지트(특히 셸에 전달)에 의해 처리되면 줄바꿈이 공백으로 변경될 수 있습니다.
또, 각 행의 끝을 백슬래시로 끝내는 것으로, 「후행」처리를 위해서, 새로운 행을 탈출할 필요가 있는 경우도 있습니다.\
)
조금 다른 구문을 사용하고,>
이 솔루션은 환경변수에 json이 필요한 경우에 매우 효과적입니다.YAML에서는 여러 줄의 문자열을 사용할 수 있습니다.
version: '2'
services:
wordpress:
container_name: 'wordpress'
image: 'wordpress:php7.2-fpm-alpine'
user: 1001:1001
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: something
WORDPRESS_DB_NAME: something
WORDPRESS_DB_PASSWORD: xxxxxxxxxxxxxxx
WORDPRESS_DEBUG: 1
WORDPRESS_CONFIG_EXTRA: >
define( 'WP_REDIS_CLIENT', 'predis' );
define( 'WP_REDIS_SCHEME', 'tcp' );
define( 'WP_REDIS_HOST', 'redis' );
define( 'WP_REDIS_PORT', '6379' );
define( 'WP_REDIS_PASSWORD', 'xxxxxxxxxxxxxxx' );
define( 'WP_REDIS_DATABASE', '0' );
define( 'WP_REDIS_MAXTTL', '21600' );
define( 'WP_CACHE_KEY_SALT', 'xx_ ');
define( 'WP_REDIS_SELECTIVE_FLUSH', 'xx_ ');
define( 'WP_AUTO_UPDATE_CORE', false );
CONFIG_ABC: >
{
"database": {
"catalog": {
"credentials": {
"username": "scott",
"password": "tiger",
"datbase": "catalog",
"host": "gn.dmfkd.lan"
}
}
}
}
CONFIG_DEF: >
{
"urlRegex": "/.*",
"script": {
"scriptPath": "example-python-app.py"
},
"runtime": "python27",
"threadsafe": true,
}
volumes:
- ./wordpress:/var/www/html
- ./logs/php:/var/logs/php
- ./config/php/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro
networks:
- frontend
- backend
restart: always
depends_on:
- mysql
언급URL : https://stackoverflow.com/questions/53197806/how-to-get-proper-docker-compose-multiline-environment-variables-formatting
'programing' 카테고리의 다른 글
React-Redux: 액션은 일반 개체여야 합니다.비동기 작업에 사용자 지정 미들웨어 사용 (0) | 2023.03.06 |
---|---|
내용 높이에 따라 iframe 높이 크기 조정 (0) | 2023.03.06 |
새 URL을 푸시할 때 React 구성 요소 렌더가 여러 번 호출됩니다. (0) | 2023.03.06 |
Python에서 YAML 파일을 JSON 개체로 변환 (0) | 2023.03.06 |
npm 패키지 설치 시 종속성 트리 오류를 해결할 수 없습니다. (0) | 2023.03.06 |