소스 검색

dev environment setup

Alexander Belanger 5 년 전
부모
커밋
ef3f3705be
6개의 변경된 파일123개의 추가작업 그리고 26개의 파일을 삭제
  1. 3 3
      README.md
  2. 14 0
      dashboard/docker/dev.Dockerfile
  3. 1 1
      dashboard/package.json
  4. 67 0
      docker-compose.dev.yaml
  5. 0 22
      docker-compose.yaml
  6. 38 0
      docker/nginx_local.conf

+ 3 - 3
README.md

@@ -1,12 +1,12 @@
 # Porter
 
-Boilerplate set up. Run:
+For development:
 
 ```sh
-docker-compose up
+docker-compose -f docker-compose.dev.yaml up --build
 ```
 
-And then visit `localhost:8080/user` in the browser. 
+And then visit `localhost:8080` in the browser. 
 
 ### Testing
 

+ 14 - 0
dashboard/docker/dev.Dockerfile

@@ -0,0 +1,14 @@
+# Development environment
+# -----------------------
+FROM node:latest
+WORKDIR /webpack
+
+COPY package*.json ./
+
+RUN npm i
+
+ENV NODE_ENV=development
+
+COPY . ./
+
+CMD npm start

+ 1 - 1
dashboard/package.json

@@ -14,7 +14,7 @@
   },
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
-    "start": "webpack-dev-server --open",
+    "start": "webpack-dev-server --host 0.0.0.0 --hot --inline --port 8080",
     "build": "webpack"
   },
   "devDependencies": {

+ 67 - 0
docker-compose.dev.yaml

@@ -0,0 +1,67 @@
+version: '3'
+services:
+  webpack:
+    build:
+      context: ./dashboard
+      dockerfile: ./docker/dev.Dockerfile
+    restart: on-failure
+    volumes:
+      - ./dashboard:/webpack:rw,cached
+  porter:
+    build:
+      context: .
+      dockerfile: ./docker/dev.Dockerfile
+    depends_on:
+      - postgres
+    env_file:
+      - ./docker/.env
+    command: /bin/sh -c '/porter/bin/migrate; air -c .air.toml;'
+    restart: on-failure
+    volumes:
+      - ./cmd:/porter/cmd
+      - ./internal:/porter/internal
+      - ./server:/porter/server
+  postgres:
+    image: postgres:latest
+    container_name: postgres
+    environment:
+      - POSTGRES_USER=porter
+      - POSTGRES_PASSWORD=porter
+      - POSTGRES_DB=porter
+    ports:
+      - 5400:5432
+    volumes:
+      - db:/var/lib/postgresql/data
+
+#   metabase:
+#     image: metabase/metabase
+#     restart: always
+#     ports: 
+#       - 3000:3000
+#     volumes: 
+#       - metabase:/metabase-data
+#     environment:
+#       MB_DB_TYPE: postgres
+#       MB_DB_DBNAME: porter
+#       MB_DB_PORT: 5432
+#       MB_DB_USER: porter
+#       MB_DB_PASS: porter
+#       MB_DB_HOST: postgres
+#     depends_on:
+#       - postgres
+
+  nginx:
+    image: nginx:mainline-alpine
+    container_name: nginx
+    restart: unless-stopped
+    ports:
+      - '8080:8080'
+    volumes:
+      - ./docker/nginx_local.conf:/etc/nginx/nginx.conf:ro
+    depends_on:
+      - porter
+      - webpack    
+
+volumes:
+  db:
+  metabase:

+ 0 - 22
docker-compose.yaml

@@ -10,12 +10,7 @@ services:
       - postgres
     env_file:
       - ./docker/.env
-    command: /bin/sh -c '/porter/bin/migrate; air -c .air.toml;'
     restart: on-failure
-    volumes:
-      - ./cmd:/porter/cmd
-      - ./internal:/porter/internal
-      - ./server:/porter/server
 
   postgres:
     image: postgres:latest
@@ -29,23 +24,6 @@ services:
     volumes:
       - db:/var/lib/postgresql/data
 
-  metabase:
-    image: metabase/metabase
-    restart: always
-    ports: 
-      - 3000:3000
-    volumes: 
-      - metabase:/metabase-data
-    environment:
-      MB_DB_TYPE: postgres
-      MB_DB_DBNAME: porter
-      MB_DB_PORT: 5432
-      MB_DB_USER: porter
-      MB_DB_PASS: porter
-      MB_DB_HOST: postgres
-    depends_on:
-      - postgres
-
 volumes:
   db:
   metabase:

+ 38 - 0
docker/nginx_local.conf

@@ -0,0 +1,38 @@
+events {}
+http {
+    upstream api {
+        server porter:8080;
+    }
+
+    upstream webpack {
+        server webpack:8080;
+    }
+
+    server {
+        listen 8080;
+        server_name localhost;
+
+        location /api/ {
+            proxy_pass http://api;
+            proxy_http_version 1.1;
+            proxy_set_header Upgrade $http_upgrade;
+            proxy_set_header Connection 'upgrade';
+            proxy_set_header Host $host;
+            proxy_cache_bypass $http_upgrade;
+            proxy_set_header   X-Forwarded-Host $server_name;
+        }
+
+        location / {
+            proxy_pass http://webpack;
+            proxy_pass_header Content-Security-Policy;
+            proxy_http_version 1.1;
+            proxy_set_header Upgrade $http_upgrade;
+            proxy_set_header Connection 'upgrade';
+            proxy_set_header Host $host;
+            proxy_cache_bypass $http_upgrade;
+            proxy_set_header   X-Forwarded-Host $server_name;
+        }
+    }
+
+    client_max_body_size 10M;
+}