THẢO LUẬN

thg 11 18, 2019 5:30 SA

à chuẩn rồi bro =)) mình nhớ có 1 trường hợp vẫn dùng được cái mapping port kia nhưng ko tính là giao tiếp giữa container vì là run outside the container. (nhớ nhầm sang trường hợp đó nên phản pháo ngay =)) ) đúng là phải có 1 cái để ánh xạ chung thì các container mới giao tiếp được với nhau, thank bro vì góp ý nhé. để mình edit lại đoạn đầu bài viết :v lú quá :v

0
thg 11 18, 2019 5:21 SA

mình dùng tài khoản mặc định thì nó báo lỗi như trên

0

a cũng chúc e thành công nhiều hơn thế 😉

0

Cám ơn bạn đã theo dõi, có nhiều thứ mình muốn chia sẻ nhưng chưa nghĩ ra chủ đề phù hợp để viết, nhưng chắc sẽ có docker,server, ci/cd nhé, vì đấy cũng là món mình rất thích 😄

0

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

0

về việc dùng debugger thay vì console.log mình không có ý kiến gì 😃, tùy vào việc cái nào tiện cho bạn hơn và bạn thấy nó có ích hơn. Mình thì vẫn dùng console.log vì đôi khi code NodeJS debug trên terminal khá nhanh và tiện. Còn nếu bạn muốn dùng debugger thì cũng rất ok vì sẽ có được thông tin chi tiết hơn 😄. Ở trong bài mình cũng code note cho các bạn là xóa console.log trước khi commit, vì thực sự mình cũng khá bị đau mắt khi đọc code người khác mà toàn console.log 😉

0
thg 11 18, 2019 4:49 SA

khi mình install thì bị lỗi này Unable to locate publishable resources. và đăng nhập thì báo lỗi These credentials do not match our records. ai biết cách fix chỉ mình với thanks

0
thg 11 18, 2019 4:41 SA

Mình đọc nãy giờ mà chưa hiểu lắm. File store của mình thế này, giờ sửa lại như nào bạn.

//ĐÂY LÀ FILE store.js
import * as firebase from 'firebase';
import {gymData} from './firebaseConnect';
//Khai báo biến redux
let redux = require('redux');

//Khai báo reducer
const allReducerInitialState = {
  editData:{},
}
const allReducer = (state = allReducerInitialState, action) => {
  switch (action.type) {
    case "ADD_DATA":
      let ketnoi1 = firebase.database().ref('dataForGym');
      ketnoi1.push(action.customer);
      console.log("Thêm dữ liệu thành công!");
      return state

    case "GET_DATA"://Lấy dữ liệu đưa qua store khi bấm vào nút Edit
      return {...state,editData:action.getOneRow}

    case "GET_EDIT_DATA"://Lấy dữ liệu ĐÃ SỬA đưa qua store và update lên firebase
      let ketnoi2 = firebase.database().ref('dataForGym');
      ketnoi2.child(action.sendEditData.id).update({
        fullname:action.sendEditData.fullname,
        email:action.sendEditData.email,
        phonenumber:action.sendEditData.phonenumber,
        birthday:action.sendEditData.birthday,
        homeaddress:action.sendEditData.homeaddress,
        registrationdate:action.sendEditData.registrationdate,
        expirydate:action.sendEditData.expirydate
      })
      console.log("Cap nhat thanh cong!");
      return {...state,editData:{}} //update xong thì gán về rỗng

    default:
      return state
  }
}

//Khai báo store
let store = redux.createStore(allReducer);

//theo dõi state của store, thay đổi thì in ra màn hình
store.subscribe(function(){
  console.log(JSON.stringify(store.getState()));
})

export default store;

0
thg 11 18, 2019 4:40 SA
  • Mình muốn chạy trước khi render để có dữ liệu thì dùng DiDMount bị muộn rồi ạ.
  • state đó mình lấy bên store (editData) rồi phun ra form luôn chứ chưa đổ vào state nội bộ của form Edit được, hic. Đang vướng chỗ này.
  • Uhm, mình xài csdl firebase. Cảm ơn pác nhe.
0
thg 11 18, 2019 4:36 SA

state này mình lấy bên store nên chỉ readonly thôi, còn muốn update thì phải tìm cách gán vào state nội bộ của form Edit chứ, rồi từ đó ta gửi ngược lại qua store để cập nhật vào csdl. Theo kiến thức của mình biết là vậy. Hi. 😃

+1
thg 11 18, 2019 3:53 SA

nat port, hay forward port trong docker internal network ra ngoài local thì đó không phải là phương thức giao tiếp giữa các container.

ông có cái 2 cái container:

  • 1 là php nat port 8000:80
  • 1 là mysql nat port 33066: 3306

tôi hỏi ông là trong container php ông kết nối với mysql bằng outside:33066 hay inside:3306 ??

Đọc thêm mấy cái này nhé

https://docs.docker.com/v17.09/engine/userguide/networking/default_network/container-communication/#communicating-to-the-outside-world

https://docs.docker.com/v17.09/engine/userguide/networking/default_network/container-communication/#communication-between-containers

https://docs.docker.com/v17.09/engine/userguide/networking/#docker-and-iptables

còn nếu muốn container kết nối được với host chạy docker, ví dụ như container php kết nối mysql chạy bên ngoài thì phải dùng cách này:

https://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to-the-localhost-of-the-mach

+1
thg 11 18, 2019 3:47 SA

thế ăn thôi 😃)

0
thg 11 18, 2019 3:41 SA

hay đó, cũng đang đọc về ajax polling, long polling

+2

Thanks, updated.

+1

ok tks b nhé

0
thg 11 18, 2019 3:30 SA

Bài xịn vậy mà không ai quan tâm nhỉ 😄 Bài viết rất hay ạ 👍

0

Bài viết hay quá

0

Bài viết tuyệt vời quá hi vọng tác giả ra nhiều bài viết hơn 😍

0
thg 11 18, 2019 3:14 SA

Chính xác, thằng docker compose này nguyên lý nó là vậy mà, nó tạo ra 1 network cho tất cả các service bên trong nó chạy chung. (có thể địng nghĩa hoặc dùng mặc định) Như mình nói thì nó đơn giản là "1 công cụ hỗ trợ" dựa trên Docker chứ không phải là 1 tính năng mới. Nó chả có gì hơn Docker cả, nó chỉ gom và thay vì trực tiếp dùng script để run thì bạn dùng 1 cái high level script đã được build sẵn để run và được kiểm duyệt và phát hành từ chính Docker mà thôi.

Mapping public port ai bảo bạn là ko phải để kết nối các container, service vốn tạo ra nó đã tách biệt rồi, cách các container giao tiếp là qua thứ nhất network hay tương tự như linking (nó sẽ hiểu theo container name). Nhưng đó là private. Mapping port cho phép các container đó giao tiếp 1 cách public, tức là ngay cả khi bạn ở bên ngoài, bạn cũng "có thể" nhìn thấy được các service hoạt động chung được. => vậy ko phải là kết nối giao tiếp giữa các container thì là gì nhỉ :-?

+1
thg 11 18, 2019 3:09 SA

fasdf.PNG

Chỗ này nè bạn

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í