feat: docker setup & deployment

This commit is contained in:
wancat committed 2023-10-14 19:43:13 +08:00
1 parent ad08bde4c4
commit 20927fe8aa
10 files changed
+87 -8

No files matched your search

+8
View File
@@ -80,6 +80,14 @@ jobs:
push: true push: true
tags: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/linux-odyssey:app tags: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/linux-odyssey:app
- name: Build analytics
uses: docker/build-push-action@v2
with:
context: .
file: ./packages/analytics/Dockerfile
push: true
tags: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/linux-odyssey:analytics
- name: Build base image - name: Build base image
uses: docker/build-push-action@v2 uses: docker/build-push-action@v2
with: with:
+15
View File
@@ -25,6 +25,21 @@ services:
environment: environment:
- MONGO_URL=mongodb://user:user-password@db:27017/odyssey-test - MONGO_URL=mongodb://user:user-password@db:27017/odyssey-test
- DOCKER_NETWORK=linux-odyssey-players - DOCKER_NETWORK=linux-odyssey-players
analytics:
image: lancatlin/linux-odyssey:analytics
build:
context: .
dockerfile: packages/analytics/Dockerfile
depends_on:
- db
networks:
- internal
ports:
- '3001:3001'
environment:
- MONGO_URL=mongodb://user:user-password@db:27017/odyssey-test
db: db:
image: mongo image: mongo
restart: always restart: always
+17
View File
@@ -39,6 +39,23 @@ services:
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET} - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
- GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID} - GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}
- GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET} - GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}
analytics:
build:
context: .
dockerfile: packages/analytics/Dockerfile.dev
depends_on:
- db
networks:
- internal
ports:
- '3001:3001'
environment:
- MONGO_URL=mongodb://db:27017/odyssey-test
volumes:
- ./packages/analytics:/app/packages/analytics
- ./packages/models:/app/packages/models
db: db:
image: mongo image: mongo
networks: networks:
+19
View File
@@ -0,0 +1,19 @@
FROM node
WORKDIR /app
COPY ./package.json yarn.lock ./
COPY packages/analytics/package.json ./packages/analytics/package.json
COPY packages/models/package.json ./packages/models/package.json
RUN yarn install --frozen-lockfile --production
COPY packages/analytics ./packages/analytics
COPY packages/models ./packages/models
WORKDIR /app/packages/analytics
ENV NODE_ENV=production
ENV HOST=0.0.0.0
ENV PORT=3001
EXPOSE 3001
CMD [ "yarn", "start" ]
+16
View File
@@ -0,0 +1,16 @@
FROM node
WORKDIR /app
COPY ./package.json yarn.lock ./
COPY packages/analytics/package.json ./packages/analytics/package.json
COPY packages/models/package.json ./packages/models/package.json
RUN yarn install --frozen-lockfile
WORKDIR /app/packages/analytics
ENV NODE_ENV=development
ENV HOST=0.0.0.0
ENV PORT=3001
EXPOSE 3001
CMD [ "yarn", "dev" ]
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"name": "analytics", "name": "analytics",
"version": "1.0.0", "version": "1.0.0",
"main": "index.js", "main": "src/index.js",
"private": true, "private": true,
"type": "module", "type": "module",
"license": "GPL", "license": "GPL",
+7 -1
View File
@@ -1,3 +1,9 @@
export default { const config = {
host: process.env.HOST || 'localhost',
port: process.env.PORT || 3001,
db: process.env.MONGO_URL || 'mongodb://localhost:27017/odyssey-test', db: process.env.MONGO_URL || 'mongodb://localhost:27017/odyssey-test',
} }
config.baseUrl = process.env.BASE_URL || `http://${config.host}:${config.port}`
export default config
+2 -2
View File
@@ -16,8 +16,8 @@ async function main() {
app.use(router) app.use(router)
app.use(express.static('./public')) app.use(express.static('./public'))
app.listen(3001, () => { app.listen(config.port, config.host, () => {
console.log('Server started on http://localhost:3001') console.log(`Server started on ${config.baseUrl}`)
}) })
} }
-1
View File
@@ -6,7 +6,6 @@
"license": "GPL", "license": "GPL",
"exports": "./index.js", "exports": "./index.js",
"dependencies": { "dependencies": {
"@linux-odyssey/file-graph": "*",
"mongoose": "^7.6.0" "mongoose": "^7.6.0"
} }
} }
+2 -3
View File
@@ -1,5 +1,4 @@
import { model, Schema } from 'mongoose' import { model, Schema } from 'mongoose'
import { FileNode } from '@linux-odyssey/file-graph'
const nodeSchema = new Schema({ const nodeSchema = new Schema({
path: String, path: String,
@@ -58,10 +57,10 @@ const Session = model(
hints: [String], hints: [String],
graph: { graph: {
type: nodeSchema, type: nodeSchema,
default: new FileNode({ default: {
path: '/', path: '/',
type: 'folder', type: 'folder',
}), },
}, },
}, },
{ timestamps: true } { timestamps: true }