Skip to content

Commit

Permalink
Update docker-compose
Browse files Browse the repository at this point in the history
  • Loading branch information
rexruan committed Mar 13, 2024
1 parent 5ddec13 commit 8671108
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 19 deletions.
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ FROM python:3.8

USER 0:0

ENV PYTHONPATH="/root:/root/server:/root/tools/efselab"
ENV PATH="$PATH:/root:/root/server:/root/tools:/root/tools/efselab"
ENV PYTHONPATH="/root:/root/tools/efselab"
ENV PATH="$PATH:/root:/root/tools:/root/tools/efselab"
ENV SWEGRAM_WORKSPACE=/root
ENV PRODUCTION=1

Expand All @@ -28,4 +28,4 @@ RUN rm -rf build_dependencies build requirements.txt swegram.egg-info

EXPOSE 8000

ENTRYPOINT [ "bash", "-c", "cd /root && python main.py" ]
ENTRYPOINT [ "bash", "-c", "cd /root && python app_run.py" ]
16 changes: 13 additions & 3 deletions app_run.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import os
import uvicorn
from fastapi import Depends, FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import RedirectResponse, HTMLResponse

from server.models import Base
from server.routers.database import engine, get_db
Expand All @@ -26,9 +28,19 @@
expose_headers=["*"],
)


# Create tables
Base.metadata.create_all(bind=engine)

@app.get("/healthcheck")
async def healthcheck():
return HTMLResponse(content="Application health check runs successfully", status_code=200)


@app.get("/")
async def index() -> RedirectResponse:
return RedirectResponse(url="/docs")


app.include_router(download_router, prefix=f"{PROD_PREFIX}/download", tags=["download"], dependencies=[Depends(get_db)])
app.include_router(features_router, prefix=f"{PROD_PREFIX}/features", tags=["features"], dependencies=[Depends(get_db)])
app.include_router(frequencies_router, prefix=f"{PROD_PREFIX}/frequencies", tags=["frequencies"], dependencies=[Depends(get_db)])
Expand All @@ -39,6 +51,4 @@


if __name__ == "__main__":
import uvicorn

uvicorn.run(app, host="0.0.0.0", port=8000)
22 changes: 14 additions & 8 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ services:
# (this is just an example, not intended to be a production configuration)
container_name: mysql-server
restart: always
# network_mode: host
# privileged: true
ports:
- "3306:3306"
volumes:
Expand All @@ -26,30 +24,33 @@ services:


backend:
image: swegram-backend:latest # Image needs to be built with network
image: rex0046/swegram-backend:1.0.1 # Image needs to be built with network
depends_on:
- db
container_name: swegram-backend-fastapi
restart: always
network_mode: host
# privileged: true
environment:
MYSQL_ROOT_PASSWORD: pass
MYSQL_DATABASE: swegram_corpus
MYSQL_USER: swegram
MYSQL_PASSWORD: swegram_pass
MYSQL_HOST: 172.18.0.1
ports:
- "8000:8000"
entrypoint: >
bash -c "cd /root && sleep 30 && python3 app_run.py"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- swegram-network
profiles:
- client


vue-nginx-proxy:
build: frontend
depends_on:
- db
- backend
container_name: vue-nginx
network_mode: host
ports:
- "80:80"
volumes:
Expand All @@ -62,3 +63,8 @@ services:
networks:
swegram-network:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.18.0.0/16
gateway: 172.18.0.1
5 changes: 3 additions & 2 deletions frontend/nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ server {
}

location /api {
proxy_pass http://127.0.0.1:8000; # Forward requests to FastAPI running on port 8000
# Test for macOS
# In linux, it can point to 127.0.0.1:8000
proxy_pass http://172.18.0.1:8000; # Forward requests to FastAPI running on port 8000
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Expand All @@ -21,5 +23,4 @@ server {

# Disable keepalive connections
keepalive_timeout 0;

}
2 changes: 1 addition & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

if __name__ == "__main__":

# os.environ["PRODUCTION"] = "1"
os.environ["PRODUCTION"] = "1"
sleep(20)
while True:
try:
Expand Down
12 changes: 10 additions & 2 deletions server/routers/database.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
import os
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker


DATABASE_URL = "mysql://swegram:[email protected]:3306/swegram_corpus"
MYSQL_USER = os.environ.get("MYSQL_USER", "swegram")
MYSQL_PASSWORD = os.environ.get("MYSQL_PASSWORD", "swegram_pass")
MYSQL_HOST = os.environ.get("MYSQL_HOST", "127.0.0.1")
MYSQL_PORT = os.environ.get("MYSQL_PORT", "3306")
MYSQL_DATABASE = os.environ.get("MYSQL_DATABASE", "swegram_corpus")


DATABASE_URL = f"mysql://{MYSQL_USER}:{MYSQL_PASSWORD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}"
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Expand All @@ -13,4 +21,4 @@ def get_db():
try:
yield db
finally:
db.close()
db.close()

0 comments on commit 8671108

Please sign in to comment.