1. 현재 미니 pc 로 홈 서버를 운영중인데 PHP 도쓰고 node 도 쓰고 하다보니 같은 80포트와 443 포트에 사용하기위해 도커 도입을 결정하였다.

 

 

2. 도커랑 도커컴포즈 설치 (환경 Ubuntu 22.04.2 LTS) 

 

3. 디렉토리는  /home 에 prod 랑 dev 를 구분해두었다

 

4. /home/prod 에 docker-compose.yml 작성 후 

version: '3.8'

x-common-settings: &common-settings
  env_file:
    - ./envs/.env

services:
  php:
    build:
      context: ./php
      dockerfile: Dockerfile
    container_name: php74-fpm_prod
    environment:
      TZ: "Asia/Seoul"
    volumes:
      - ./projects/project_name/www:/var/www/html/project_name
    networks:
      shared_network_prod:
        ipv4_address: 172.xx.x.x
    <<: *common-settings
  composer:
    container_name: composer_prod
    image: composer:latest
    volumes:
      - ./projects/project_name/www:/app
    working_dir: /app
    command: install
    <<: *common-settings
    networks:
      shared_network_prod:
        ipv4_address: 172.xx.x.x
  nginx:
    build:
      context: ./nginx
      dockerfile: Dockerfile
    container_name: nginx_proxy_prod
    image: nginx_proxy_prod
    environment:
      TZ: "Asia/Seoul"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:r - read 만 가능하도록
      - ./projects/project_name/ssl/:/etc/ssl/project_name/
      - ./nginx/log/nginx:/var/log/nginx
      - ./projects/project_name/www:/var/www/html/project_name
      #- ./certbot/conf:/etc/letsencrypt
      #- ./certbot/www:/var/www/certbot
    <<: *common-settings
    networks:
      shared_network_prod:
        ipv4_address: 172.xx.x.x
  db:
    build:
      context: ./postgresql
      dockerfile: Dockerfile
    container_name: postgres_prod
    environment:
      TZ: "Asia/Seoul"
    ports:
      - "5433:5432"
    volumes:
      - ./postgresql/data:/var/lib/postgresql/data
    networks:
      shared_network_prod:
        ipv4_address: 172.xx.x.x

  node-app:
    build:
      context: ./node_study
      dockerfile: Dockerfile
    container_name: node_study_prod
    ports:
      - "6000:3000"
    volumes:
      - ./node_study/node-api-study:/usr/src/app
      - /usr/src/app/node_modules
    networks:
      shared_network_prod:
        ipv4_address: 172.xx.x.x
    command: ["npm", "run", "start"]


networks:
  shared_network_prod:
    external:
      name: nwtwork_name

 

- ports 는 환경에따라 변경하면 되고 

하위 디렉토리는 

이런 구조로 작업했다.

 

 

도커 관리 툴로  portainer 가 사용해보니 좋은거 같던데 나중에 블로그 써서 자세하게 쓰겠다

'Docker' 카테고리의 다른 글

깃랩 업데이트  (0) 2024.11.27
도커로 실행중인 깃랩 자동 백업 스크립트  (0) 2024.11.27

+ Recent posts