Merge pull request #29 from hriprsd/main

adding dockerfile and compose files for hosting chessu in container
This commit is contained in:
Nathaniel Tampus
2024-10-15 08:52:37 +08:00
committed by GitHub
5 changed files with 89 additions and 0 deletions

8
.dockerignore Normal file
View File

@@ -0,0 +1,8 @@
.github
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE
README.md
docker-compose.yml
Dockerfile
LICENSE

1
.gitignore vendored
View File

@@ -11,6 +11,7 @@ yarn.lock
node_modules
.pnp
.pnpm-store
.pnp.js
.next

17
Dockerfile Normal file
View File

@@ -0,0 +1,17 @@
FROM node:lts-alpine3.20
ENV PNPM_HOME=/usr/local/bin
WORKDIR /opt/chessu/
COPY . .
RUN apk update && \
corepack enable && corepack prepare pnpm@latest --activate && \
pnpm config set store-dir /opt/chessu/.pnpm-store && \
pnpm install -g pnpm@latest && \
pnpm install --unsafe-perm
ENTRYPOINT ["pnpm"]
CMD ["start"]

View File

@@ -48,6 +48,32 @@ This project is structured as a monorepo using **pnpm** workspaces, separated in
- To run the frontend and backend servers separately, use `pnpm dev:client` and `pnpm dev:server`, respectively.
5. You can now access the frontend at http://localhost:3000 and the backend at http://localhost:3001.
## Running chessu with Docker
To build the project with Docker, you can use the provided `Dockerfile`.
```sh
docker build -t chessu .
```
This command will build the Docker image with the name `chessu`. You can then run the image with the following command:
```sh
docker run -p 3000:3000 -p 3001:3001 chessu
```
Once built, to start the project with POSTGRES, you can use the provided `docker-compose.yml` file.
```sh
docker-compose up
```
Please make sure to modify the values in the `server/.env` file to match the values in the `docker-compose.yml` file or vice versa.
The entrypoint for the Docker image is set to run pnpm.
The Dockerfile's `CMD` instruction is set to run the project in production mode.
If you want to run the project in development mode, you can override the `CMD` instruction by running the following command:
```sh
docker run -p 3000:3000 -p 3001:3001 chessu dev # runs both client and server in development mode
docker run -p 3000:3000 -p 3001:3001 chessu dev:client # runs only the client in development mode
docker run -p 3000:3000 -p 3001:3001 chessu dev:server # runs only the server in development mode
```
## Contributing
Please read our [Contributing Guidelines](./CONTRIBUTING.md) before starting a pull request.

37
docker-compose.yml Normal file
View File

@@ -0,0 +1,37 @@
version: '3.8'
services:
chessu:
image: chessu:latest # Replace with the correct image if needed
container_name: chessu_container
environment:
POSTGRES_DB: chessu
POSTGRES_USER: exampleuser
POSTGRES_PASSWORD: examplepassword
DATABASE_URL: postgres://chessu_user:chessu_pass@db:5432/chessu
ports:
- "3000:3000"
- "3001:3001"
depends_on:
- db
networks:
- chessu_network
db:
image: postgres:15
container_name: postgres_container
environment:
POSTGRES_DB: chessu
POSTGRES_USER: exampleuser
POSTGRES_PASSWORD: examplepassword
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- chessu_network
volumes:
postgres_data:
networks:
chessu_network:
driver: bridge