THẢO LUẬN

Comment dễ thương quá em! Cám ơn nha! Chị chỉ là dev cùi viết tào lao thôi ^^

0
thg 9 6, 2020 8:02 SA

Cho mình hỏi với file Dockerfile như thế này: FROM php:7.2-fpm-alpine

WORKDIR /var/www/html

#install PHP Composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

#COPY . .

  • tức là không chạy lệnh copy thì có vấn đề gì xảy ra không? Bởi vì trong bài này, mình rem lệnh này lại thì project vẫn chạy bình thường.
  • Trong file docker-compose.yml, đã map ./:/var/www/html rồi, như vậy, mình chạy lệnh composer install sẳn cho project laravel có được không? hay vẫn phải chạy theo thứ tự trong bài.
0
thg 9 6, 2020 7:33 SA

ok bạn, để mình xem thử

+1
thg 9 6, 2020 7:32 SA

Bạn xem ở bài Nhập môn CICD với Gitlab của mình, để ý file .gitlab-ci.yaml của mình có pull image về trước, sau đó làm cache build thì sẽ nhanh hơn (dùng option --cache-from).

Tất nhiên với cách này thì ta phải pull image về trước và trong trường hợp image to nặng thì có khi thời gian pull còn dài hơn cả chạy npm install, cái gì cũng có 2 mặt của nó 😄.

Nhưng thường image pull từ registry về size sẽ khá bé so với size thực tế khi ta check bằng docker images vì chúng được nén lại khi lên registry rồi.

0
thg 9 6, 2020 7:27 SA

hi bạn, mình cũng dân dev học cách deploy bằng docker trên Linux. Hiện tại mình có dùng GitLab CI để build image từ source repo của Gitlab. Mình có sử dụng cache để lưu folder node_modules lại đến khi có changes, nhưng hầu như mỗi lần build là 1 instance Git Runner khác nhau nên cache ko có ý nghĩa gì cả dẫn đến cache no meaning. Bạn có cách giải quyết nào khác ko? thanks bạn

0
thg 9 6, 2020 6:35 SA

@HuyDQ Rất mong bạn viết thêm nhiều những bài hay như này nữa

0
thg 9 6, 2020 6:23 SA

cám ơn bạn đã ủng hộ 🤝

0

file analysis_options.yaml:

analyzer:
  strong-mode:
    implicit-casts: false 
    implicit-dynamic: false
  errors:
    close_sinks: ignore

linter:
  rules:
    - annotate_overrides
    - avoid_empty_else
    - avoid_function_literals_in_foreach_calls
    - avoid_init_to_null
    - avoid_null_checks_in_equality_operators
    - avoid_relative_lib_imports
    - avoid_renaming_method_parameters
    - avoid_return_types_on_setters
    - avoid_returning_null
    - avoid_types_as_parameter_names
    - avoid_unused_constructor_parameters
    - await_only_futures
    - camel_case_types
    - cancel_subscriptions
    - cascade_invocations
    - comment_references
    - constant_identifier_names
    - control_flow_in_finally
    - directives_ordering
    - empty_catches
    - empty_constructor_bodies
    - empty_statements
    - hash_and_equals
    - implementation_imports
    - invariant_booleans
    - iterable_contains_unrelated_type
    - library_names
    - library_prefixes
    - lines_longer_than_80_chars
    - list_remove_unrelated_type
    - no_adjacent_strings_in_list
    - no_duplicate_case_values
    - non_constant_identifier_names
    - null_closures
    - omit_local_variable_types
    - only_throw_errors
    - overridden_fields
    - package_api_docs
    - package_names
    - package_prefixed_library_names
    - prefer_adjacent_string_concatenation
    - prefer_collection_literals
    - prefer_conditional_assignment
    - prefer_const_constructors
    - prefer_contains
    - prefer_equal_for_default_values
    - prefer_final_fields
    - prefer_initializing_formals
    - prefer_interpolation_to_compose_strings
    - prefer_is_empty
    - prefer_is_not_empty
    - prefer_single_quotes
    - prefer_typing_uninitialized_variables
    - recursive_getters
    - slash_for_doc_comments
    - sort_constructors_first
    - test_types_in_equals
    - throw_in_finally
    - type_init_formals
    - unawaited_futures
    - unnecessary_brace_in_string_interps
    - unnecessary_const
    - unnecessary_getters_setters
    - unnecessary_lambdas
    - unnecessary_new
    - unnecessary_null_aware_assignments
    - unnecessary_statements
    - unnecessary_this
    - unrelated_type_equality_checks
    - use_rethrow_when_possible
    - valid_regexps
+1
Avatar
đã bình luận câu trả lời trong câu hỏi
thg 9 6, 2020 3:25 SA

@ngocson0211 Có nhiều đường đi có thể tới đích bạn ạ.
Nếu rảnh thì sửa lại theo cách của Laravel nó hỗ trợ, tiện thể học luôn xem Accessor là gì 😄

0
thg 9 6, 2020 2:31 SA

Bài viết hay quá mình phải đăng nhập để cảm ơn tác giả

+1
thg 9 5, 2020 4:54 CH

cho mình hỏi là có thể upload chỉ bằng API key được không. ứng dụng của mình sử dụng youtube để lưu trữ video, việc upload chạy ngầm trên backend và độc lập với người dùng. upload tập trung vào 1 tài khoản, không phải vào tài khoản của người dùng. Xin cảm ơn

0
thg 9 5, 2020 4:08 CH

sếp đợt này lại ra một loạt bài rồi, e hơi bận chút nên chưa kịp đọc =)) hôm nào có time anh làm thêm mấy bài sử dụng redis sâu sâu tý a nhé ^^

+1

Cảm ơn bạn rất nhiều ạ 😍

0
thg 9 5, 2020 1:16 CH

Bài viết thật phù hợp với người bắt đầu như mình. Nhiều khái niệm trước đây mình chưa hỉu thì bi giờ đã hỉu. Mong chờ bài viết tiếp theo của bạn

Tks.

+1

Mình chỉ biết 2 bài bên đấy copy của mình ai ngờ 5 bài lần 😢 2 Bài của mình bên đó copy được tận 10k, 15k view.

Tính ra viblo mình cũng mất vài bạn đọc mới. Nhưng chất nhất vẫn là via Viblo 😄

0
thg 9 5, 2020 8:57 SA

3 byte đầu tiên của chúng tôi

Sao nghe như dịch vậy bạn ơi :-ss

0
thg 9 5, 2020 8:39 SA

Đẹp UI/UX friendly! (y)

0

@@ Mấy năm trước mới làm cái đồ án môn Quản trị mạng về thằng Metasploit này, nhưng chỉ sử dụng module có sẵn, rất hóng series xây dựng hoàn chỉnh một module ❤️ cám ơn anh, bài viết rất chi tiết

+1
thg 9 5, 2020 6:39 SA

khi tôi làm theo cách của bạn tôi gặp lỗi này, dường như cái host trong config replSet nó không work pymongo.errors.ServerSelectionTimeoutError: mongo1:27017: [Errno 11001] getaddrinfo failed,mongo2:27017: [Errno 11001] getaddrinfo failed,mongo3:27017: [Errno 11001] getaddrinfo failed bạn có ý tưởng nào không?

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í