Có phải không hiểu biết Linux là một thiếu sót lớn của lập trình viên? Cần các bác trợ giúp về docker

Mình trước giờ lập trình, sử dụng các công cụ lập trình trong mội trường windows. Sau đó bước chân vào Linux mình mới thấy rằng ở đó là một thế giới mới và KHÔNG THỂ TIẾN XA nếu không có hiểu biết về Linux. Đầu tiên là việc tự cài đặt các phần mềm phía Server.

Mình có một dự án dùng Laravel -PHP. Phía server mình sử dụng vagrant + VM box + homestead để giả lập Máy chủ, nhưng nó rất hay lỗi. Sau đó mình chuyển qua Docker, nhưng thực sự nó không đơn giản chút nào. Build bằng những câu lệnh mà mình không hiểu gì cả.

Mình tìm được images homestead: https://hub.docker.com/r/shincoder/homestead/ và làm theo hướng dẫn trong đó. Tất cả đều thuật lơi cho đến đoạn:

Add a virtual host
Assuming you mapped your apps folder to /apps (you can change mappings in the docker-compose.yml file,
it's prefered to use absolute paths), you can do:

cd / && ./serve.sh myapp.dev /apps/myapp/public

Mình không hiểu là đoạn lệnh cd / && ./serve.sh myapp.dev /apps/myapp/public chèn vào đâu. Vào file docker-compose.yml hay truy cập vào ssh để chèn. Mong các bạn giúp đỡ mình trường hợp này. :slight_smile: :slight_smile:

Những lập trình viên không biết Linux chắc toàn đồ bỏ đi.
Nhìn rộng rộng ra nữa xem nào ???

2 Likes

Hi Nguyễn Đức Hoàng.
Thử virtualbox và cài bản ubuntu déktop lên xem @_@!

Bạn làm từ trên xuống, lệnh đó là gõ vào trong ssh

// Nên học và tìm hiểu windows kha khá, sau đó hãy chuyển sang linux

1 Like

Trong ssh có cần phải truy cập vào thư mục nào nữa ko bác nhỉ? mình copy page thì báo lỗi

Mình dùng qua vagrant đơn giản hơn. Lúc đầu cũng ổn định nhưng sau đó khởi động nó hay báo những lỗi không đâu. Laravel nó yêu cầu cài nhiều gói phụ, mình chưa có hiểu biết Linux lên chắc không khả thi :smile:

Hi Nguyễn Đức Hoàng.
Thế học xơ qua. Mất 1 tuần là ok.

Chào bạn, thiếu xót thế nào thì mình không biết. Nhưng bạn muốn học linux, thì mình bảo đảm nếu bạn tập trung học thì chỉ khoảng 1 tháng bạn đã đủ kiến thức và kỹ năng hòm hòm với linux rồi.

Bản chất nó cũng chỉ là một hệ điều hành, đang dùng window quen rồi hãy dùng linux và thử so sánh các đặc điểm chung như quản lý tiến trình, quản lý file, quản lý bộ nhớ,… giữa 2 hệ diều hành.

Còn lệnh bạn không hiểu: [quote=“Nguyen_Duc_Hoang1, post:1, topic:55090”]
cd / && ./serve.sh myapp.dev /apps/myapp/public
[/quote]

cd: change director: chuyển sang thư mục. “/” trong linux là thư mục root
&& là toán tử như mọi ngôn ngữ lập trình
còn đoạn đằng sau là thực hiện các shell thôi.
Dễ hiểu thôi mà, chúc bạn may mắn

2 Likes

Tất nhiên biết nhiều thì lợi thế lớn, nhất là ngày nay Cloud Computing phát triển như nấm mọc sau mưa mà toàn chạy Linux Distro
Thực tế làm quen và thao tác tốt với Linux không mất nhiều thời gian do Internet có đầy ra, tìm, setup và luyện xử lý tình huống bằng cách xài Ubuntu Server (no GUI) trên máy ảo hay mua VPS về vọc

2 Likes

Bạn ấy bảo không biết chạy lệnh đó lên ssh hay config vào docker-compose.yml
Mà mình nghĩ là phải chạy lệnh chứ

Có thể chuyển sang dùng ubuntu 1 thời gian là ngấm thôi. :smiley:. Dục tốc bất đạt

3 Likes

Nếu bạn ko làm .net, hoặc lập trình app cho windows thì ko cần tìm hiểu gì kha khá, linux là os thích hợp nhất cho developer rồi (ko tính làm iOS, MAC programming)

1 Like

trong ngữ cảnh của repo nói thì ssh vào container rồi chạy lệnh, nhưng bạn cũng có thể bỏ thẳng vào Dockerfile, tùy ý bạn muốn nó chạy ntn.

1 Like

Bạn phải in cái code của docker-compose cho ae xem.

Bạn bị thiếu phần mapping folder (sync) giữa host chính và container host. Cụ thể:
Map /apps
Map port
Mở etc/hosts (macOS - platform khác search nha), thêm dòng myapp.dev 127.0.0.1:port với port đã map ở trên.

Ps: ai nói iOS không cần biết Linux nào, iOS dev

1 Like

Mình đã giải quyết được vấn đề. Cd ra thư mục root và chạy lệnh. File docker-compose.yml cũng đã có mapping.
docker-compose.yml

web:
    image: shincoder/homestead:php7.0
    restart: always
    ports:
        - "8000:80" # web
        - "2222:22" # ssh
        - "35729:35729" # live reload
        - "9876:9876" # karma server
    volumes:
        - ~/.composer:/home/homestead/.composer # composer caching
        - ~/.gitconfig:/home/homestead/.gitconfig # Git configuration ( access alias && config )
        - ~/.ssh:/home/homestead/.ssh # Ssh keys for easy deployment inside the container
        - D:\laravelproject/:/apps # all apps
        - ~/apps/volumes/nginx/sites-available:/etc/nginx/sites-available # nginx sites ( in case you recreate the container )
        - ~/apps/volumes/nginx/sites-enabled:/etc/nginx/sites-enabled # nginx sites ( in case you recreate the container )
    links:
        - mariadb

mariadb:
    image: tutum/mariadb
    restart: always
    ports:
        - "33060:3306"
    environment:
        MARIADB_USER: admin # cannot be changed ( for info. only )
        MARIADB_PASS: root
    volumes:
        - ~/apps/volumes/mysql:/var/lib/mysql # database files

Nhưng có một vấn đề: Kết nối vào mariadb rất hay bị dis. Và Khi kết nối được thì import database(file .sql) bị lỗi. Mặc dù mình thử trong vagrant-homestead thì bình thường. Mình sử dụng SqlYognavicat thì đều báo lỗi foreign key. Mariadb sử dụng 1 container riêng nhé các bạn. Khó hiểu thật… :slight_smile:

Hic bác nói ác quá, em mù linux, trước giờ toàn làm windows, hic chắc phải về luyện linux chứ ko tụt hậu

Hạn chế set mount volumes kiểu này, nên để ./

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?