mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-05 19:20: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
|
||||
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
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
|
||||
@@ -25,6 +25,21 @@ services:
|
||||
environment:
|
||||
- MONGO_URL=mongodb://user:user-password@db:27017/odyssey-test
|
||||
- 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:
|
||||
image: mongo
|
||||
restart: always
|
||||
|
||||
@@ -39,6 +39,23 @@ services:
|
||||
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
|
||||
- GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}
|
||||
- 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:
|
||||
image: mongo
|
||||
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",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"main": "src/index.js",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"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',
|
||||
}
|
||||
|
||||
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(express.static('./public'))
|
||||
|
||||
app.listen(3001, () => {
|
||||
console.log('Server started on http://localhost:3001')
|
||||
app.listen(config.port, config.host, () => {
|
||||
console.log(`Server started on ${config.baseUrl}`)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
"license": "GPL",
|
||||
"exports": "./index.js",
|
||||
"dependencies": {
|
||||
"@linux-odyssey/file-graph": "*",
|
||||
"mongoose": "^7.6.0"
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
import { model, Schema } from 'mongoose'
|
||||
import { FileNode } from '@linux-odyssey/file-graph'
|
||||
|
||||
const nodeSchema = new Schema({
|
||||
path: String,
|
||||
@@ -58,10 +57,10 @@ const Session = model(
|
||||
hints: [String],
|
||||
graph: {
|
||||
type: nodeSchema,
|
||||
default: new FileNode({
|
||||
default: {
|
||||
path: '/',
|
||||
type: 'folder',
|
||||
}),
|
||||
},
|
||||
},
|
||||
},
|
||||
{ timestamps: true }
|
||||
|
||||
Reference in new issue
Block a user