From 3fe67426bb3d594268a47fa1039d26430b30942e Mon Sep 17 00:00:00 2001 From: JongYeob Sheen Date: Sat, 18 Nov 2023 13:45:18 +0900 Subject: [PATCH] =?UTF-8?q?Docker=20hostname=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 8 +- .env.dev.sample | 2 +- .env.local.sample | 2 +- .env.prod.sample | 2 +- docker/dev/docker-compose.yml | 8 +- docker/local/docker-compose.yml | 8 +- docker/prod/docker-compose.yml | 8 +- package.json | 1 + src/components/login/LoginForm.tsx | 163 ++++++++++++++++++ src/components/login/TitleBGImage/index.tsx | 18 -- .../login/TitleBGImage/styles.module.css | 39 ----- src/components/login/TitleLogo/index.tsx | 10 -- .../login/TitleLogo/styles.module.css | 25 --- src/components/login/index.tsx | 24 --- src/components/login/styles.module.css | 26 --- src/pages/login/index.tsx | 8 +- 16 files changed, 188 insertions(+), 164 deletions(-) create mode 100644 src/components/login/LoginForm.tsx delete mode 100644 src/components/login/TitleBGImage/index.tsx delete mode 100644 src/components/login/TitleBGImage/styles.module.css delete mode 100644 src/components/login/TitleLogo/index.tsx delete mode 100644 src/components/login/TitleLogo/styles.module.css delete mode 100644 src/components/login/index.tsx delete mode 100644 src/components/login/styles.module.css diff --git a/.env b/.env index edc148a..e9f8300 100644 --- a/.env +++ b/.env @@ -1,5 +1,7 @@ //DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@jongyeob.com/learnsteam_quiz" -NEXTAUTH_URL=https://learnsteam-quiz.jongyeob.com -NEXT_PUBLIC_HOST=https://learnsteam-quiz.jongyeob.com -NEXT_PUBLIC_API_ENDPOINT=https://learnsteam-quiz-api.jongyeob.com +DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@db/learnsteam_quiz" +//DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@127.0.0.1/learnsteam_quiz" +NEXTAUTH_URL=http://localhost:3000 +NEXT_PUBLIC_HOST=http://localhost:3000 +NEXT_PUBLIC_API_ENDPOINT=http://localhost:3000 NEXTAUTH_SECRET=dd87d8220ed9535d3152910f62ca40fb8ae292ac527e9528425118406aebbce0 \ No newline at end of file diff --git a/.env.dev.sample b/.env.dev.sample index 4b7b34d..92fd11f 100644 --- a/.env.dev.sample +++ b/.env.dev.sample @@ -1,4 +1,4 @@ -DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@db/learnsteam_quiz" +DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@learnsteam-db/learnsteam_quiz" //DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@127.0.0.1/learnsteam_quiz" NEXTAUTH_URL=https://learnsteam-quiz.jongyeob.com NEXT_PUBLIC_HOST=https://learnsteam-quiz.jongyeob.com diff --git a/.env.local.sample b/.env.local.sample index 06cc2f2..e5251f4 100644 --- a/.env.local.sample +++ b/.env.local.sample @@ -1,5 +1,5 @@ //DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@jongyeob.com/learnsteam_quiz" -DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@db/learnsteam_quiz" +DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@learnsteam-db/learnsteam_quiz" //DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@127.0.0.1/learnsteam_quiz" NEXTAUTH_URL=http://localhost:3100 NEXT_PUBLIC_HOST=http://localhost:3100 diff --git a/.env.prod.sample b/.env.prod.sample index 2868c1d..cfed308 100644 --- a/.env.prod.sample +++ b/.env.prod.sample @@ -1,4 +1,4 @@ -DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@db/learnsteam_quiz" +DATABASE_URL="mysql://root:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@learnsteam-db/learnsteam_quiz" //DATABASE_URL="mysql://learnsteam:fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6@jongyeob.com/learnsteam_quiz" NEXTAUTH_URL=https://learnsteam-quiz.jongyeob.com NEXT_PUBLIC_HOST=https://learnsteam-quiz.jongyeob.com diff --git a/docker/dev/docker-compose.yml b/docker/dev/docker-compose.yml index 58efd19..86e74da 100644 --- a/docker/dev/docker-compose.yml +++ b/docker/dev/docker-compose.yml @@ -1,7 +1,7 @@ version: "3" services: - db: + learnsteam-db: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6 @@ -10,7 +10,7 @@ services: - "33062:3306" volumes: - db-learnsteam-quiz:/var/lib/mysql - app: + learnsteam-quiz: build: context: ../../ dockerfile: docker/dev/Dockerfile @@ -18,13 +18,13 @@ services: ports: - "3100:3100" environment: - DB_HOST: db + DB_HOST: learnsteam-db DB_PORT: 3306 DB_USER: root DB_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6 DB_NAME: learnsteam_quiz depends_on: - - db + - learnsteam-db restart: always volumes: db-learnsteam-quiz: diff --git a/docker/local/docker-compose.yml b/docker/local/docker-compose.yml index 322ba55..e7b8c2b 100644 --- a/docker/local/docker-compose.yml +++ b/docker/local/docker-compose.yml @@ -1,7 +1,7 @@ version: "3" services: - db: + learnsteam-db: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6 @@ -10,7 +10,7 @@ services: - "33062:3306" volumes: - db-learnsteam-quiz:/var/lib/mysql - app: + learnsteam-quiz: build: context: ../../ dockerfile: docker/local/Dockerfile @@ -18,13 +18,13 @@ services: ports: - "3100:3100" environment: - DB_HOST: db + DB_HOST: learnsteam-db DB_PORT: 3306 DB_USER: root DB_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6 DB_NAME: learnsteam_quiz depends_on: - - db + - learnsteam-db restart: always volumes: db-learnsteam-quiz: diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index 3aafaae..19e2ad9 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -1,7 +1,7 @@ version: "3" services: - db: + learnsteam-db: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6 @@ -10,7 +10,7 @@ services: - "33062:3306" volumes: - db-learnsteam-quiz:/var/lib/mysql - app: + learnsteam-quiz: build: context: ../../ dockerfile: docker/prod/Dockerfile @@ -18,13 +18,13 @@ services: ports: - "3100:3100" environment: - DB_HOST: db + DB_HOST: learnsteam-db DB_PORT: 3306 DB_USER: root DB_PASSWORD: fbOgZ6Xxn5VXBYihjqygRXyaK6ZUgKL6 DB_NAME: learnsteam_quiz depends_on: - - db + - learnsteam-db restart: always volumes: db-learnsteam-quiz: diff --git a/package.json b/package.json index a927975..f3ec88b 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "lucide-react": "^0.291.0", "moment": "^2.29.4", "next": "14.0.1", + "next-auth": "^4.24.5", "numeral": "^2.0.6", "qs": "^6.11.2", "react": "^18", diff --git a/src/components/login/LoginForm.tsx b/src/components/login/LoginForm.tsx new file mode 100644 index 0000000..f874538 --- /dev/null +++ b/src/components/login/LoginForm.tsx @@ -0,0 +1,163 @@ +import DefaultModal from "@/components/shared/ui/default-modal" +import { Alert, Button, Card, Checkbox, Divider, Flex, Form, Input } from "antd" +import { useForm } from "antd/lib/form/Form" +import { signIn } from "next-auth/react" +import { useRouter } from "next/router" +import React, { useCallback, useState } from "react" +import { UserOutlined, LockOutlined, EyeInvisibleOutlined, EyeTwoTone } from "@ant-design/icons" + +interface ILoginFormValue { + username: string + password: string +} + +const LoginForm = () => { + const router = useRouter() + const [form] = useForm() + const [isLoading, setIsLoading] = useState(false) + const [showPasswordModal, setShowPasswordModal] = useState(false) + + const handleFinish = useCallback(async (value: ILoginFormValue) => { + setIsLoading(true) + + try { + console.log(value) + await signIn("login-credentials", { username: value.username, password: value.password }) + } catch (error) { + setIsLoading(false) + } + }, []) + + // 카카오톡 로그인 핸들러 + const handleKakaoLogin = () => { + // 카카오톡 로그인 처리 로직 구현 + console.log("카카오톡 로그인 진행") + } + + const onFinish = () => {} + + const onFinishFail = () => {} + + return ( +
+ +
+ + + + + OR LOGIN WITH EMAIL + + + } placeholder="아이디" /> + + + } + placeholder="비밀번호" + iconRender={(visible) => (visible ? : )} + /> + + + + 로그인 기억 + + + + 비밀번호 찾기 + + + + + + + + + +
+
+
+ ) +} +// +//

코딩스쿨 로그인

+// +// {router?.query.error && router?.query.error !== "CredentialsSignin" ? ( +//
+// +//
+// ) : null} +// +// signIn("github")}> +// +// +// +// 카카오톡 +// +// +// OR LOGIN with EMAIL +// +// form={form} +// layout="vertical" +// initialValues={{ username: "admin", password: "admin" }} +// onFinish={handleFinish} +// > +//
+// {router?.query.error === "CredentialsSignin" ? ( +// <> +// +// +// ) : ( +// <> +// )} +//
+// +// +// + +// +// +// + +// + +// setShowPasswordModal(true)}> +// 비밀번호 찾기 +// +// +//
+//
+ +export default React.memo(LoginForm) diff --git a/src/components/login/TitleBGImage/index.tsx b/src/components/login/TitleBGImage/index.tsx deleted file mode 100644 index 7bb416f..0000000 --- a/src/components/login/TitleBGImage/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import styles from "./styles.module.css" - -export const TitleBGImage = () => { - return ( -
-
-
-
-
-
-
-
-
-
- ) -} - -export default TitleBGImage diff --git a/src/components/login/TitleBGImage/styles.module.css b/src/components/login/TitleBGImage/styles.module.css deleted file mode 100644 index 8b7af03..0000000 --- a/src/components/login/TitleBGImage/styles.module.css +++ /dev/null @@ -1,39 +0,0 @@ -.title-bgimage-wraps { - width: 100%; - height: 100%; - background-color: #051224; - display: flex; - flex-direction: column; - justify-content: space-between; - position: absolute; -} - -.title-top-wrap { - width: 100%; - display: flex; - flex-direction: row; - justify-content: space-between; -} - -.title-bottom-wrap { - width: 100%; - display: flex; - flex-direction: row; - justify-content: space-between; -} - -.title-bgimage-1 { - background-image: url("/title_bgimage_1.png"); - background-size: contain; - background-repeat: no-repeat; - width: 747px; - height: 394px; -} - -.title-bgimage-2 { - background-image: url("/title_bgimage_2.png"); - background-size: contain; - background-repeat: no-repeat; - width: 709px; - height: 325px; -} diff --git a/src/components/login/TitleLogo/index.tsx b/src/components/login/TitleLogo/index.tsx deleted file mode 100644 index 76c1a99..0000000 --- a/src/components/login/TitleLogo/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import styles from "./styles.module.css" - -const TitleLogo = () => { - return ( - <> -
- - ) -} -export default TitleLogo diff --git a/src/components/login/TitleLogo/styles.module.css b/src/components/login/TitleLogo/styles.module.css deleted file mode 100644 index eb464f8..0000000 --- a/src/components/login/TitleLogo/styles.module.css +++ /dev/null @@ -1,25 +0,0 @@ -.title-image { - background-image: url("/title2.png"); - background-repeat: no-repeat; - background-position: center; - background-size: contain; - width: 83vw; - height: 30vh; - top: 16vh; - position: absolute; - animation-name: title-move; - animation-duration: 1s; - animation-iteration-count: 1; - transition: all ease-in-out; -} - -@keyframes title-move { - from { - opacity: 0; - top: 20vh; - } - to { - opacity: 1; - top: 16vh; - } -} diff --git a/src/components/login/index.tsx b/src/components/login/index.tsx deleted file mode 100644 index 2242b6d..0000000 --- a/src/components/login/index.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import dynamic from "next/dynamic" -import styles from "./styles.module.css" -import TitleBGImage from "./TitleBGImage" -import TitleLogo from "./TitleLogo" - -const Login = () => { - // const GoogleOneTapLogin = dynamic(() => import("./GoogleOneTapLogin"), { - // ssr: false, - // }) - - return ( -
- -
-
- - {/* */} -
-
-
- ) -} - -export default Login diff --git a/src/components/login/styles.module.css b/src/components/login/styles.module.css deleted file mode 100644 index 70c0fb0..0000000 --- a/src/components/login/styles.module.css +++ /dev/null @@ -1,26 +0,0 @@ -.container { - display: flex; - flex-direction: row; - justify-content: center; - position: fixed; - width: 100%; - height: 100%; -} - -.title { - align-items: flex-start; - background-color: var(--white); - border: 1px none; - display: flex; - height: 100%; - width: 100%; -} - -.title-wrapper { - align-items: center; - display: flex; - flex-direction: column; - width: 100%; - height: 100%; - position: absolute; -} diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx index 1a7c4ab..86c6da8 100644 --- a/src/pages/login/index.tsx +++ b/src/pages/login/index.tsx @@ -1,7 +1,7 @@ -import Login from "@/components/login" +import LoginForm from "@/components/login/LoginForm" -const Index = () => { - return +const LoginPage = () => { + return } -export default Index +export default LoginPage