IT/Docker

[Docker] Docker-compose 에서 .env 파일 사용

월공 2021. 9. 3. 11:51
728x90
300x250

docker-compose 에서 mariadb 설정할때 .env 파일을 사용할일이 좀 있어서 기록 남겨둔다.

아래 yml 파일을 보면 알겠지만 mariadb 이미지를 생성하면서 .env 파일을

docker-compose.yml 파일이 위치한 디렉토리에 db 라는 폴더안에 넣어놓았다.

version: "3.7"
networks:
  default:
    external:
      name: mybridge
services:
  db:
    image: mariadb:10
    env_file:
      - "./db/.env"
    volumes:
      - "./db/data:/var/lib/mysql"
      - "./db/dump:/disk"
      - "./db/initdb.d:/docker-entrypoint-initdb.d"    
    #물론 .env 파일 없이 아래처럼 그냥 쭉 나열해도 상관은 없다
    #environment:
    #  TZ: Asia/Seoul
    #  MYSQL_ROOT_PASSWORD: root비밀번호
    #  MYSQL_DATABASE: 생성될 Database 명
    ports:
      - "3311:3306"
    restart: always
  web:
    image: bugkingus/centos8_apache2_php7:latest
    privileged: true
    build:
      context: .
      #dockerfile: Dockerfile-httpd-php
    ports:
      - "87:80"
    volumes:
      - ./www:/var/www/html
    links:
      - db
    restart: always

 

.env 파일내용

TZ=Asia/Seoul
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=Root패스워드
MYSQL_DATABASE=생성될 DB명
MYSQL_USER=생성될 User명
MYSQL_PASSWORD=생성될 User의 비밀번호

 

주의해야할것은 docker-compose up -d 해서 컨테이너 두개를 작동시키고나면 db 같은경우엔 이미 기존에 세팅되있던대로 data 관련 파일이 모두 생성되기 때문에 , docker-compose.yml 을 수정하게된다면 data 관련 파일은 모두 삭제해줘야한다.

 

위 docker-compose.yml 기준으로 설명을 한다면 나는 mariadb 경로 마운트를

아래처럼 진행하였는데

- "./db/data:/var/lib/mysql"

docker-compose.yml 파일의 db 관련 설정이 수정된다면 기존에 /db/data 는 날려줘야된다는 뜻이다.

728x90
300x250