diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000000..2ca2e86e87
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,2 @@
+**/node_modules
+**/.env
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000..ce95f49f45
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,35 @@
+FROM node:19-alpine AS react-client
+WORKDIR /client
+# copy package.json into the container at /client
+COPY /client/package*.json /client/
+# install dependencies
+RUN npm ci
+# Copy the current directory contents into the container at /client
+COPY /client/ /client/
+# Build webpack artifacts
+RUN npm run build
+
+FROM node:19-alpine AS node-api
+WORKDIR /api
+# copy package.json into the container at /api
+COPY /api/package*.json /api/
+# install dependencies
+RUN npm ci
+# Copy the current directory contents into the container at /api
+COPY /api/ /api/
+# Copy the client side code
+COPY --from=react-client /client/public /client/public
+# Make port 3080 available to the world outside this container
+EXPOSE 3080
+# Expose the server to 0.0.0.0
+ENV HOST=0.0.0.0
+# Run the app when the container launches
+CMD ["npm", "start"]
+
+# Optional: for client with nginx routing
+FROM nginx:stable-alpine AS nginx-client
+WORKDIR /usr/share/nginx/html
+COPY --from=react-client /client/public /usr/share/nginx/html
+# Add your nginx.conf
+COPY /client/nginx.conf /etc/nginx/conf.d/default.conf
+ENTRYPOINT ["nginx", "-g", "daemon off;"]
diff --git a/README.md b/README.md
index 93315d744c..a3b952931c 100644
--- a/README.md
+++ b/README.md
@@ -7,6 +7,19 @@ https://user-images.githubusercontent.com/110412045/223754183-8b7f45ce-6517-4bd5
This project was started early in Feb '23, anticipating the release of the official ChatGPT API from OpenAI, and now uses it. Through this clone, you can avoid ChatGPT Plus in favor of free or pay-per-call APIs. I will soon deploy a demo of this app. Feel free to contribute, clone, or fork. Currently dockerized.
## Updates
+
+2023-03-22
+
+
+
+**Released [v0.0.6](https://github.com/danny-avila/chatgpt-clone/releases/tag/v0.0.6)**, the latest stable release before **Searching messages** goes live tomorrow. See exact updates to date in the tag link. By request, there is now also a **[community discord server](https://discord.gg/NGaa9RPCft)**
+
+
+
+Previous Updates
+
+
+
2023-03-20
@@ -18,9 +31,6 @@ The above features are next and then I will have to focus on building the **test
On that note, I had to switch the default branch due to some breaking changes that haven't been straight forward to debug, mainly related to node-chat-gpt the main dependency of the project. Thankfully, my working branch, now switched to default as main, is working as expected.
-
-
-
2023-03-16
@@ -61,8 +71,6 @@ Due to increased interest in the repo, I've dockerized the app as of this update
Also worth noting, the method to access the Free Version is no longer working, so I've removed it from model selection until further notice.
-Previous Updates
-
2023-03-04
Custom prompt prefixing and labeling is now supported through the official API. This nets some interesting results when you need ChatGPT for specific uses or entertainment. Select 'CustomGPT' in the model menu to configure this, and you can choose to save the configuration or reference it by conversation. Model selection will change by conversation.
@@ -324,7 +332,12 @@ This means my implementation or the underlying model may not behave exactly the
- This works in a similar way to ChatGPT, except I'm pretty sure they have some additional way of retrieving context from earlier messages when needed (which can probably be achieved with embeddings, but I consider that out-of-scope for now).
## Contributing
-If you'd like to contribute, please create a pull request with a detailed description of your changes.
+
+Contributions and suggestions welcome! Bug reports and fixes are welcome!
+
+For new features, components, or extensions, please open an issue and discuss before sending a PR.
+
+- Join the [Discord community](https://discord.gg/NGaa9RPCft)
## License
This project is licensed under the MIT License.
diff --git a/api/.dockerignore b/api/.dockerignore
deleted file mode 100644
index 7af7f04757..0000000000
--- a/api/.dockerignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/node_modules
-.env
\ No newline at end of file
diff --git a/api/Dockerfile b/api/Dockerfile
deleted file mode 100644
index d417bf1ec4..0000000000
--- a/api/Dockerfile
+++ /dev/null
@@ -1,16 +0,0 @@
-FROM node:19-alpine
-WORKDIR /api
-# copy package.json into the container at /api
-COPY package*.json /api/
-# install dependencies
-RUN npm ci
-# Copy the current directory contents into the container at /api
-COPY . /api/
-# Make port 3080 available to the world outside this container
-EXPOSE 3080
-# Expose the server to 0.0.0.0
-ENV HOST=0.0.0.0
-# Run the app when the container launches
-CMD ["npm", "start"]
-
-# docker build -t node-api .
diff --git a/client/.dockerignore b/client/.dockerignore
deleted file mode 100644
index 7af7f04757..0000000000
--- a/client/.dockerignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/node_modules
-.env
\ No newline at end of file
diff --git a/client/Dockerfile b/client/Dockerfile
deleted file mode 100644
index 59148137a4..0000000000
--- a/client/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Stage 1
-FROM node:19-alpine as builder
-WORKDIR /client
-# copy package.json into the container at /client
-COPY package*.json /client/
-# install dependencies
-RUN npm ci
-# Copy the current directory contents into the container at /client
-COPY . /client/
-# Build webpack artifacts
-RUN npm run build
-
-# Stage 2
-FROM nginx:stable-alpine
-WORKDIR /usr/share/nginx/html
-RUN rm -rf ./*
-COPY --from=builder /client/public /usr/share/nginx/html
-# Add your nginx.conf
-COPY nginx.conf /etc/nginx/conf.d/default.conf
-ENTRYPOINT ["nginx", "-g", "daemon off;"]
-
-# docker build -t react-client .
diff --git a/docker-compose.yml b/docker-compose.yml
index 401055f988..bb65f6588b 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,50 +1,42 @@
-version: "2"
+version: "3.4"
services:
- client:
- image: react-client
- build: ./client
- restart: always
- ports:
- - "3080:80"
- volumes:
- - ./client:/client
- - /client/node_modules
- links:
- - api
- networks:
- - webappnetwork
- api:
- image: node-api
- build: ./api
- restart: always
- env_file:
- - ./api/.env
- environment:
- - HOST=0.0.0.0
- - NODE_ENV=production
- - MONGO_URI=mongodb://mongodb:27017/chatgpt-clone
- ports:
- - "9000:3080"
- volumes:
- - ./api:/api
- - /api/node_modules
- depends_on:
- - mongodb
- networks:
- - webappnetwork
- mongodb:
- image: mongo
- restart: always
- container_name: mongodb
- volumes:
- - ./data-node:/data/db
- ports:
- - 27020:27017
- command: mongod --noauth
- networks:
- - webappnetwork
-
-networks:
- webappnetwork:
- driver: bridge
+ # client:
+ # image: nginx-client
+ # build:
+ # context: .
+ # target: nginx-client
+ # restart: always
+ # ports:
+ # - 3080:80
+ # volumes:
+ # - /client/node_modules
+ # depends_on:
+ # - api
+ api:
+ ports:
+ - 3080:3080 # Change it to 9000:3080 if you want to use nginx
+ depends_on:
+ - mongodb
+ image: node-api
+ build:
+ context: .
+ target: node-api
+ restart: always
+ env_file:
+ - ./api/.env
+ environment:
+ - HOST=0.0.0.0
+ - NODE_ENV=production
+ - MONGO_URI=mongodb://mongodb:27017/chatgpt-clone
+ volumes:
+ - /client/node_modules
+ - ./api:/api
+ - /api/node_modules
+ mongodb:
+ image: mongo
+ restart: always
+ container_name: mongodb
+ volumes:
+ - ./data-node:/data/db
+ command: mongod --noauth