mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-08 11:30:12 +08:00
feat: docker setup & deployment
This commit is contained in:
1 parent
ad08bde4c4
commit
20927fe8aa
10 files changed
+87
-8
No files matched your search
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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" ]
|
||||||
@@ -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,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",
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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}`)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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 }
|
||||||
|
|||||||
Reference in new issue
Block a user