THẢO LUẬN

Anh cho em hỏi thêm là trường hợp pull secret của ECR nó hay hết hạn thì anh xử lí như thế nào trong flow này vậy ạ

0
thg 2 16, 2023 4:08 CH

Hi anh,

Em có đang làm theo hướng dẫn thì bị lỗi Authentication failed, em có thử research cũng như là đọc các comment của các bạn ở dưới nhưng có vẻ nó vẫn ko work, anh xem qua giúp em với ạ

.env:

PORT=3000
DB_HOST=db
DB_PORT=27017
DB_NAME=my_db
DB_ROOT_USER=rootuser
DB_ROOT_PASS=rootuserpass
DB_USER=myuser
DB_PASSWORD=myuserpass

REDIS_HOST=redis
REDIS_PORT=6379

Dockerfile:

FROM node:12.18-alpine

WORKDIR /app

COPY . .

RUN npm install

# Production
RUN npm install -g pm2
CMD ["pm2-runtime", "ecosystem.config.js", "--env", "production"]

docker-compose.yml

  version: "3.4"

services:
  app:
    image: learning-docker-secure:v1
    volumes:
      - ./public/images:/app/public/images
    environment:
      - DB_HOST=${DB_HOST}
      - DB_PORT=${DB_PORT}
      - DB_NAME=${DB_NAME}
      - DB_USER=${DB_USER}
      - DB_PASSWORD=${DB_PASSWORD}
      - REDIS_HOST=${REDIS_HOST}
      - REDIS_PORT=${REDIS_PORT}
      - PORT=${PORT}
    ports:
      - "${PORT}:${PORT}"
    restart: unless-stopped
    depends_on:
      - redis
      - db
    networks:
      - db-network
      - cache-network

  db:
    image: mongo
    volumes:
      - .docker/data/db:/data/db
    restart: unless-stopped
    networks:
      - db-network
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${DB_ROOT_USER}
      - MONGO_INITDB_ROOT_PASSWORD=${DB_ROOT_PASS}
      - DB_PORT=${DB_PORT}
      - DB_NAME=${DB_NAME}
      - DB_USER=${DB_USER}
      - DB_PASSWORD=${DB_PASSWORD}
  redis:
    image: redis:5-alpine
    volumes:
      - .docker/data/redis:/data
    restart: unless-stopped
    networks:
      - cache-network
networks:
  cache-network:
    driver: bridge
  db-network:
    driver: bridge

app.js

...
const dbHost = process.env.DB_HOST || 'localhost'
const dbPort = process.env.DB_PORT || 27017
const dbName = process.env.DB_NAME || 'my_db_name'
const dbUser = process.env.DB_USER
const dbUserPassword = process.env.DB_PASSWORD
const mongoUrl = `mongodb://${dbUser}:${dbUserPassword}@${dbHost}:${dbPort}/${dbName}`
...

Em có thử đổi admin -> my_db giống như comment của một bạn ở dưới, nhưng nó cũng không hiệu quả, Hy vọng anh có thể giúp em,

Em cảm ơn ạ

0
thg 2 16, 2023 2:57 CH

là sao bạn nhỉ?

vậy là bạn bị lỗi khi docker compose up ... hay là lỗi khi exec vào container docker compose exec app sh ?

0

@wake95 e chạy ở project root nhé, nơi mà e có file composer.json ấy

0

cám ơn e đã theo dõi.

Dùng từ "đánh đổi" thì không đến mức đó, chỉ là a thích việc a đang làm thôi, hầu như a luôn ngồi máy tính cả ngày, 7 ngày 1 tuần và quanh năm: để làm việc, để vọc vạch những cái mới, làm dự án riêng,... Đúng là vì thế mà a cũng ít có thời gian hơn cho các mqh bên ngoài, nhìn đi nhìn lại cả ngày chỉ ở trong phòng với cái laptop. Nhưng a thấy thích những việc a đang làm, nó giúp a phát triển, học/làm đc nhiều hơn, kiếm cũng đc nhiều hơn nữa 🤣🤣🤣.

0
thg 2 16, 2023 2:51 CH

Nếu như bạn vẫn thắc mắc nhé 😃

Screenshot 2023-02-16 at 10.51.06 PM.png

0
thg 2 16, 2023 2:48 CH

cluster của mình có 3 node đó bạn, bạn thử set replica lên > 1 rồi get pod là sẽ thấy mỗi pod chạy trên 1 node nhé.

Nếu chỉ dùng 1 node như local, minikube của bạn thì mình đã ko viết series này rồi 😃. Ngay từ đầu series mình đã nói rõ là chúng ta sẽ thực hành trên cluster của mình, tối thiểu luôn có 3 node cho các bạn

0

😍cám ơn bạn đã theo dõi 😍

0

Thêm nữa 5>2, ta chắc chắn một điều là số lượng 5 xuất hiện ít hơn số lượng 2 xuất hiện, do đó cuối cùng ta chỉ cần đếm số lần 5 xuất hiện là đủ. Đoạn này mình đọc hơi khó hiểu, bạn giải thích cho mình hiểu hơn là vì sao 5 > 2 thì số lượng 5 xuất hiện ít hơn số lượng 2 xuất hiện với.

0

home screen: import 'package:flutter/cupertino.dart';

// import 'package:http/http.dart'; import 'package:flutter/material.dart'; import 'package:flutter_auth/Screens/Welcome/components/login_signup_btn.dart';

class homescreen extends StatefulWidget { const homescreen({Key? key}) : super(key: key);

Widget build(BuildContext context) { return Scaffold( appBar: AppBar(backgroundColor: Colors.pink, title: Text('Home')), body: Column( children: [ Row(children: [ ElevatedButton( child: Text('log out'), style: ButtonStyle( backgroundColor: MaterialStateProperty.all(Colors.red)), onPressed: () {Navigator.push( context, MaterialPageRoute( builder: (context) => const LoginAndSignupBtn() ) );},

        ),

        ElevatedButton(
          child: Text('help'),
          style: ButtonStyle(
              backgroundColor: MaterialStateProperty.all(Colors.white)),
          onPressed: () {},
        ),
        Center(
          child: Text('welcome'),
        ),
      ])
    ],
  ),
);

}

@override State<homescreen> createState() => _homescreenState(); }

class _homescreenState extends State<homescreen> { @override Widget build(BuildContext context) { return const Placeholder(); } } /* mẫu code navigative

class FirstRoute extends StatelessWidget { const FirstRoute({super.key});

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('First Route'), ), body: Center( child: ElevatedButton( child: const Text('Open route'), onPressed: () { // Navigate to second route when tapped. }, ), ), ); } }

class SecondRoute extends StatelessWidget { const SecondRoute({super.key});

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Second Route'), ), body: Center( child: ElevatedButton( onPressed: () { // Navigate back to first route when tapped. }, child: const Text('Go back!'), ), ), ); } } */

0
thg 2 16, 2023 10:04 SA

Mình thắc mắc 1 vấn đề là khúc "Patch Embedding" bạn có nói tới 1 câu là "Mỗi phần tử đóng vai trò như các kí tự trong các bài toán xử lý ngôn ngữ" nếu hiểu theo nghĩa lập trình thì có phải là 1 patch đó sẽ có 1 ký tự hay có thể là 1,5 hoặc hơn nhiều ký tự bạn nhỉ ? do nếu cố định mổi patch là 1 ký tự thì việc phân chia hình ảnh lúc đưa vào sẽ rất phúc tạp (hay có các nào khác để làm việc này) mình xin cảm ơn vì bạn đã chia sẽ bài viết.

0

@nhancuachungta đúng vậy, theo mình mới tìm hiểu thì cái này chỉ sử dụng api của openai sử dụng model text-davinci-003, nhưng mình dùng thì nó cũng đủ cho mình rồi, cần thiết hơn thì mình lên web, nhưng dạo này web hay bị tèo quá

0
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 2 16, 2023 8:42 SA

@Sauancut sao mình vào ko được 2 link này thế bạn, bạn có up lên driver hay gì không, share cho mình với. cám ơn bạn

0
thg 2 16, 2023 7:56 SA

tks

+1
thg 2 16, 2023 7:34 SA

Cảm ơn anh/bạn đã ủng hộ nha ^^

0
Avatar
đã bình luận cho bài viết
thg 2 16, 2023 7:22 SA

thiệt bạn ơi 🤣 ngày 3 học lâu qué chưa ra nữa....kkkk

+1
thg 2 16, 2023 6:36 SA

Hi bạn,

Bài viết rất hay và đầy đủ, mình có làm theo hướng dẫn thì ở khúc deploy thì thay vì phải tạo một folder trên máy local thì mình thuê hẳn một con server để test, mọi chuyện đang rất ổn cho đến khi mình bắt đầu chạy câu docker-compose up thì nó báo lỗi ở trong container app: exec /usr/local/bin/docker-entrypoint.sh: exec format error

Mình đã thử nhiều cách như là thêm quyền exec cho file cũng như là thử restart nhưng đều không được, hiện tại trên máy mình vẫn hoạt động bình thường chỉ có trên server thật thì mới ko chạy được thôi.

Hy vọng bạn có thể giúp mình,

Thanks.

Một vài thông tin thêm:

  • docker-compose của mình trên server

image.png

  • .env của mình trên server:

image.png

  • Dockerfile của mình dưới local:

image.png

0
Avatar
đã bình luận cho bài viết
thg 2 16, 2023 6:18 SA

tks

0

Tài liệu của apple nhưng dịch rất có tâm, cảm ơn tác giả nhiều 👍️

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí