Docker kết nối php mysql

sudo add-apt-repository “deb [arch=amd64] https. //Tải xuống. người đóng tàu. com/linux/ubuntu $[lsb_release -cs] ổn định”

3. Cài đặt Docker

  1. Sử dụng lệnh apt để cài đặt Docker trên Ubuntu

    $ sudo apt-get update
     $ sudo apt-get install docker-ce docker-ce-cli containerd.io
    
  2. Kiểm tra trạng thái Docker tra cứu

    $ sudo service docker status 
    

    Nếu Docker của bạn chưa được khởi động, hãy khởi động nó bằng lệnh

    $ sudo dịch vụ docker bắt đầu

  3. Xác nhận kết quả cài đặt Docker thành công hay không bằng cách chạy một Hình ảnh thử nghiệm xem có hoạt động bình thường không

    $ sudo docker run hello-world
    

Thiết lập Laravel, Nginx và Mysql với Docker Compose

1. Khởi tạo Laravel

Bạn hãy trỏ đến thư mục chính bạn muốn đặt dự án sau đó chạy lệnh

$ nhà soạn nhạc tạo dự án –prefer-dist laravel/laravel docker-laravel

Di chuyển vào dự án

$ cd docker-laravel

2. Tạo Docker Compose

Sau khi chuyển vào dự án, bạn hãy tạo tập tin có tên là

$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
6. Xây dựng các ứng dụng của bạn với Docker Compose giúp đơn giản hóa quá trình thiết lập và tạo phiên bản cho cơ sở hạ tầng của bạn
Trong tệp
$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
6 chèn nội dung dưới đây vào tệp

version: '3'
 services:

 #PHP Service
    app:
       build:
           context: .
           dockerfile: Dockerfile
       image: framgia/laravel-php-fpm
       container_name: project_app
       restart: always
       tty: true
       environment:
           SERVICE_NAME: project_app
           SERVICE_TAGS: dev
       working_dir: /var/www
       volumes:
            - ./:/var/www
            - ./php/php.ini:/usr/local/etc/php/conf.d/local.ini
       networks:
            - app-network

 #Nginx Service
    webserver:
       image: nginx
       container_name: project_webserver
       restart: always
       tty: true
       ports:
           - "80:80"
           - "443:443"
       volumes:
           - ./:/var/www
           - ./nginx/conf.d/:/etc/nginx/conf.d/
        networks:
           - app-network

 #MySQL Service
    db:
        image: mysql:5.7.22
        container_name: project_db
        restart: always
        tty: true
        ports:
            - "3376:3306"
        environment:
            MYSQL_DATABASE: laravel
            MYSQL_ROOT_PASSWORD: your_mysql_root_password
            SERVICE_TAGS: dev
            SERVICE_NAME: mysql
        volumes:
            - dbdata:/var/lib/mysql/
            - ./mysql/my.cnf:/etc/mysql/my.cnf
        networks:
            - app-network

 #Docker Networks
    networks:
        app-network:
            driver: bridge
#Volumes
    volumes:
        dbdata:
            driver: local

Trong tệp

$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
6, bạn sẽ xác định các dịch vụ đó là. app, webservice, db và các cú pháp khác bên trong mỗi dịch vụ

  • ứng dụng. Dịch vụ này chứa ứng dụng của bạn và sử dụng 1 Docker Image_______0_______9 [Các bạn có thể tùy chỉnh và chọn Docker Image phù hợp]
  • dịch vụ web. Dịch vụ này lấy
    $ sudo service docker status 
    
    0Image từ Docker và chạy các cổng
    $ sudo service docker status 
    
    1 và
    $ sudo service docker status 
    
    2
  • db. Dịch vụ này lấy
    $ sudo service docker status 
    
    3Image từ Docker và xác định 1 vài biến môi trường như là
    $ sudo service docker status 
    
    4 và
    $ sudo service docker status 
    
    5. Bạn có thể tùy chỉnh lại giá trị của các biến sao cho phù hợp
  • container_name. xác định tên cho vùng chứa, tương ứng với tên của từng dịch vụ
  • ** mạng ứng dụng. **như là 1 mạng cầu nối các Container lại với nhau, tạo điều kiện giao tiếp giữa các Container
  • dbdata. trong
    $ sudo service docker status 
    
    6 dùng để duy trì cơ sở dữ liệu mysql, cho phép bạn khởi động lại
    $ sudo service docker status 
    
    6 mà không bị mất dữ liệu
  • $ sudo service docker status 
    
    8
    $ sudo service docker status 
    
    9 và
    $ sudo docker run hello-world
    
    0 đều được sử dụng để gắn kết với cảnh quan bên phải sau dấu
    $ sudo docker run hello-world
    
    1 trong Container, cho phép bạn bổ sung hoặc chỉnh sửa cấu hình nội dung nếu cần thiết

3. Tạo Dockerfile

Docker cho phép bạn chỉ định môi trường bên trong các Container riêng lẻ bằng Dockerfile. Dockerfile cho phép bạn tạo Hình ảnh mà bạn sử dụng để cài đặt phần mềm theo yêu cầu của dự án. Bạn có thể đẩy các tùy chỉnh hình ảnh mà bạn đã tạo vào Docker Hub

Tạo tệp có tên là Dockerfile trong thư mục của dự án, tệp này sẽ thiết lập 1 Hình ảnh và chỉ định các lệnh và hướng dẫn cần thiết để xây dựng Hình ảnh của dự án Laravel của bạn

FROM php:8.0-fpm
 #Copy composer.lock and composer.json
 COPY composer.lock composer.json /var/www/
 #Set working directory
 WORKDIR /var/www
 #Install dependencies
 RUN apt-get update && apt-get install -y 
     build-essential 
     libpng-dev 
     libjpeg62-turbo-dev 
     libfreetype6-dev 
     locales 
     zip 
     jpegoptim optipng pngquant gifsicle 
     vim 
     unzip 
     git 
     curl

 #Clear cache

 RUN apt-get clean && rm -rf /var/lib/apt/lists/*
 #Install extensions
 RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
 RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ 
 RUN docker-php-ext-install gd
 #Install composer
 RUN curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
 #Add user for laravel application
 RUN groupadd -g 1000 username
 RUN useradd -u 1000 -ms /bin/bash -g username username
 #Copy existing application directory contents
 COPY . /var/www
 #Copy existing application directory permissions
 COPY --chown=username:username . /var/www
 #Change current user to username
 USER username
 EXPOSE 9000
 CMD ["php-fpm"]

Trước tiên, bạn đã khởi tạo 1 Image php. 8. 0-fpm như ở trên, câu lệnh

$ sudo docker run hello-world
2 được sử dụng để cập nhật, cài đặt và thiết lập cấu hình bên trong Vùng chứa, tạo người dùng và nhóm được gọi là tên người dùng
$ sudo docker run hello-world
3 command display a port in the area contain 9000, for php-fpmmáy chủ.
$ sudo docker run hello-world
4 chỉ lệnh sẽ chạy sau khi vùng chứa được tạo

4. Cấu hình PHP

Theo bước số 2 chúng ta tạo file

$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
6 thì file cấu hình php của chúng ta sẽ nằm ở
$ sudo service docker status 
8. Bây giờ chúng ta sẽ tạo ra nó

$ mkdir php
 $ cd php
 $ touch php.ini

Sau đó mở file php. ini và ghi lại các cấu hình mà bạn mong muốn, ví dụ mình ghi lại cấu hình đơn giản về kích thước tối đa cho phép đưa các tệp lên dự án như sau

upload_max_filesize=40M
 post_max_size=40M

5. Cấu hình Nginx

Tương tự cấu hình php thì Nginx chúng ta cũng sẽ tạo tệp theo đường dẫn

$ sudo service docker status 
9 trong tệp
$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
6, nếu bạn không xác định tên tệp thì mặc định sẽ gọi đến tệp
$ sudo docker run hello-world
9

$ mkdir nginx
 $ cd nginx
 $ mkdir conf.d
 $ cd conf.d
 $ touch default.conf

Sau đó, chèn đoạn mã dưới đây vào tệp

$ sudo docker run hello-world
9

server {
     listen 80;
     index index.php index.html;
     error_log  /var/log/nginx/error.log;
     access_log /var/log/nginx/access.log;
     root /var/www/public;
     location ~ .php$ {
         try_files $uri =404;
         fastcgi_split_path_info ^[.+.php][/.+]$;
         fastcgi_pass app:9000;
         fastcgi_index index.php;
         include fastcgi_params;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         fastcgi_param PATH_INFO $fastcgi_path_info;
     }
     location / {
         try_files $uri $uri/ /index.php?$query_string;
         gzip_static on;
     }
 }
  • nghe. Chỉ thị cổng xác nhận cổng này mà máy chủ sẽ lắng nghe các yêu cầu đến
  • error_logvà access_log. Lệnh này xác định các tệp để ghi nhật ký
  • nguồn gốc. This is only set the original directory directory,Tạo thành đường dẫn hoàn chỉnh đến bất kỳ tệp nào được yêu cầu trên hệ thống tệp cục bộ

6. Cấu hình Mysql

Tương tự cấu hình Nginx hay php, Chúng ta cũng sẽ tạo tệp theo đường dẫn

$ sudo docker run hello-world
0trong tệp
$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
6

$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
0

Sau đó, chèn đoạn mã mà bạn muốn ghi đè vào tệp của tôi. cnf ví dụ như là gán

version: '3'
 services:

 #PHP Service
    app:
       build:
           context: .
           dockerfile: Dockerfile
       image: framgia/laravel-php-fpm
       container_name: project_app
       restart: always
       tty: true
       environment:
           SERVICE_NAME: project_app
           SERVICE_TAGS: dev
       working_dir: /var/www
       volumes:
            - ./:/var/www
            - ./php/php.ini:/usr/local/etc/php/conf.d/local.ini
       networks:
            - app-network

 #Nginx Service
    webserver:
       image: nginx
       container_name: project_webserver
       restart: always
       tty: true
       ports:
           - "80:80"
           - "443:443"
       volumes:
           - ./:/var/www
           - ./nginx/conf.d/:/etc/nginx/conf.d/
        networks:
           - app-network

 #MySQL Service
    db:
        image: mysql:5.7.22
        container_name: project_db
        restart: always
        tty: true
        ports:
            - "3376:3306"
        environment:
            MYSQL_DATABASE: laravel
            MYSQL_ROOT_PASSWORD: your_mysql_root_password
            SERVICE_TAGS: dev
            SERVICE_NAME: mysql
        volumes:
            - dbdata:/var/lib/mysql/
            - ./mysql/my.cnf:/etc/mysql/my.cnf
        networks:
            - app-network

 #Docker Networks
    networks:
        app-network:
            driver: bridge
#Volumes
    volumes:
        dbdata:
            driver: local
3 bằng 1 cho phép các bản ghi chung và các
version: '3'
 services:

 #PHP Service
    app:
       build:
           context: .
           dockerfile: Dockerfile
       image: framgia/laravel-php-fpm
       container_name: project_app
       restart: always
       tty: true
       environment:
           SERVICE_NAME: project_app
           SERVICE_TAGS: dev
       working_dir: /var/www
       volumes:
            - ./:/var/www
            - ./php/php.ini:/usr/local/etc/php/conf.d/local.ini
       networks:
            - app-network

 #Nginx Service
    webserver:
       image: nginx
       container_name: project_webserver
       restart: always
       tty: true
       ports:
           - "80:80"
           - "443:443"
       volumes:
           - ./:/var/www
           - ./nginx/conf.d/:/etc/nginx/conf.d/
        networks:
           - app-network

 #MySQL Service
    db:
        image: mysql:5.7.22
        container_name: project_db
        restart: always
        tty: true
        ports:
            - "3376:3306"
        environment:
            MYSQL_DATABASE: laravel
            MYSQL_ROOT_PASSWORD: your_mysql_root_password
            SERVICE_TAGS: dev
            SERVICE_NAME: mysql
        volumes:
            - dbdata:/var/lib/mysql/
            - ./mysql/my.cnf:/etc/mysql/my.cnf
        networks:
            - app-network

 #Docker Networks
    networks:
        app-network:
            driver: bridge
#Volumes
    volumes:
        dbdata:
            driver: local
4 quy định cụ thể có thể thiết lập nơi các bản ghi sẽ được lưu trữ

$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
1

7. Cài đặt môi trường cho dự án và chạy các Container

Đậu tiên, nếu ta chưa có file. env thì hãy tạo tệp

version: '3'
 services:

 #PHP Service
    app:
       build:
           context: .
           dockerfile: Dockerfile
       image: framgia/laravel-php-fpm
       container_name: project_app
       restart: always
       tty: true
       environment:
           SERVICE_NAME: project_app
           SERVICE_TAGS: dev
       working_dir: /var/www
       volumes:
            - ./:/var/www
            - ./php/php.ini:/usr/local/etc/php/conf.d/local.ini
       networks:
            - app-network

 #Nginx Service
    webserver:
       image: nginx
       container_name: project_webserver
       restart: always
       tty: true
       ports:
           - "80:80"
           - "443:443"
       volumes:
           - ./:/var/www
           - ./nginx/conf.d/:/etc/nginx/conf.d/
        networks:
           - app-network

 #MySQL Service
    db:
        image: mysql:5.7.22
        container_name: project_db
        restart: always
        tty: true
        ports:
            - "3376:3306"
        environment:
            MYSQL_DATABASE: laravel
            MYSQL_ROOT_PASSWORD: your_mysql_root_password
            SERVICE_TAGS: dev
            SERVICE_NAME: mysql
        volumes:
            - dbdata:/var/lib/mysql/
            - ./mysql/my.cnf:/etc/mysql/my.cnf
        networks:
            - app-network

 #Docker Networks
    networks:
        app-network:
            driver: bridge
#Volumes
    volumes:
        dbdata:
            driver: local
5 bằng cách sao chép tệp
version: '3'
 services:

 #PHP Service
    app:
       build:
           context: .
           dockerfile: Dockerfile
       image: framgia/laravel-php-fpm
       container_name: project_app
       restart: always
       tty: true
       environment:
           SERVICE_NAME: project_app
           SERVICE_TAGS: dev
       working_dir: /var/www
       volumes:
            - ./:/var/www
            - ./php/php.ini:/usr/local/etc/php/conf.d/local.ini
       networks:
            - app-network

 #Nginx Service
    webserver:
       image: nginx
       container_name: project_webserver
       restart: always
       tty: true
       ports:
           - "80:80"
           - "443:443"
       volumes:
           - ./:/var/www
           - ./nginx/conf.d/:/etc/nginx/conf.d/
        networks:
           - app-network

 #MySQL Service
    db:
        image: mysql:5.7.22
        container_name: project_db
        restart: always
        tty: true
        ports:
            - "3376:3306"
        environment:
            MYSQL_DATABASE: laravel
            MYSQL_ROOT_PASSWORD: your_mysql_root_password
            SERVICE_TAGS: dev
            SERVICE_NAME: mysql
        volumes:
            - dbdata:/var/lib/mysql/
            - ./mysql/my.cnf:/etc/mysql/my.cnf
        networks:
            - app-network

 #Docker Networks
    networks:
        app-network:
            driver: bridge
#Volumes
    volumes:
        dbdata:
            driver: local
6 và đổi thành tệp
version: '3'
 services:

 #PHP Service
    app:
       build:
           context: .
           dockerfile: Dockerfile
       image: framgia/laravel-php-fpm
       container_name: project_app
       restart: always
       tty: true
       environment:
           SERVICE_NAME: project_app
           SERVICE_TAGS: dev
       working_dir: /var/www
       volumes:
            - ./:/var/www
            - ./php/php.ini:/usr/local/etc/php/conf.d/local.ini
       networks:
            - app-network

 #Nginx Service
    webserver:
       image: nginx
       container_name: project_webserver
       restart: always
       tty: true
       ports:
           - "80:80"
           - "443:443"
       volumes:
           - ./:/var/www
           - ./nginx/conf.d/:/etc/nginx/conf.d/
        networks:
           - app-network

 #MySQL Service
    db:
        image: mysql:5.7.22
        container_name: project_db
        restart: always
        tty: true
        ports:
            - "3376:3306"
        environment:
            MYSQL_DATABASE: laravel
            MYSQL_ROOT_PASSWORD: your_mysql_root_password
            SERVICE_TAGS: dev
            SERVICE_NAME: mysql
        volumes:
            - dbdata:/var/lib/mysql/
            - ./mysql/my.cnf:/etc/mysql/my.cnf
        networks:
            - app-network

 #Docker Networks
    networks:
        app-network:
            driver: bridge
#Volumes
    volumes:
        dbdata:
            driver: local
5 bằng lệnh.
version: '3'
 services:

 #PHP Service
    app:
       build:
           context: .
           dockerfile: Dockerfile
       image: framgia/laravel-php-fpm
       container_name: project_app
       restart: always
       tty: true
       environment:
           SERVICE_NAME: project_app
           SERVICE_TAGS: dev
       working_dir: /var/www
       volumes:
            - ./:/var/www
            - ./php/php.ini:/usr/local/etc/php/conf.d/local.ini
       networks:
            - app-network

 #Nginx Service
    webserver:
       image: nginx
       container_name: project_webserver
       restart: always
       tty: true
       ports:
           - "80:80"
           - "443:443"
       volumes:
           - ./:/var/www
           - ./nginx/conf.d/:/etc/nginx/conf.d/
        networks:
           - app-network

 #MySQL Service
    db:
        image: mysql:5.7.22
        container_name: project_db
        restart: always
        tty: true
        ports:
            - "3376:3306"
        environment:
            MYSQL_DATABASE: laravel
            MYSQL_ROOT_PASSWORD: your_mysql_root_password
            SERVICE_TAGS: dev
            SERVICE_NAME: mysql
        volumes:
            - dbdata:/var/lib/mysql/
            - ./mysql/my.cnf:/etc/mysql/my.cnf
        networks:
            - app-network

 #Docker Networks
    networks:
        app-network:
            driver: bridge
#Volumes
    volumes:
        dbdata:
            driver: local
8

Tiếp theo, hãy mở tệp. env bạn vừa tạo và chỉnh sửa lại thông tin cấu hình cơ sở dữ liệu của bạn

$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
2

Tiếp tục, bạn chỉ cần chạy 1 câu lệnh để khởi động tất cả các Container, tạo Volume, thiết lập và kết nối với Networks

$ docker-soạn thảo lên -d

Sau khi chạy thành công, để kiểm tra các Container đang chạy, bạn nhập lệnh

$ docker ps

Bây giờ, thay vì các bạn sử dụng câu lệnh trong laravel thường ngày khi chưa cài đặt Docker ví dụ như

version: '3'
 services:

 #PHP Service
    app:
       build:
           context: .
           dockerfile: Dockerfile
       image: framgia/laravel-php-fpm
       container_name: project_app
       restart: always
       tty: true
       environment:
           SERVICE_NAME: project_app
           SERVICE_TAGS: dev
       working_dir: /var/www
       volumes:
            - ./:/var/www
            - ./php/php.ini:/usr/local/etc/php/conf.d/local.ini
       networks:
            - app-network

 #Nginx Service
    webserver:
       image: nginx
       container_name: project_webserver
       restart: always
       tty: true
       ports:
           - "80:80"
           - "443:443"
       volumes:
           - ./:/var/www
           - ./nginx/conf.d/:/etc/nginx/conf.d/
        networks:
           - app-network

 #MySQL Service
    db:
        image: mysql:5.7.22
        container_name: project_db
        restart: always
        tty: true
        ports:
            - "3376:3306"
        environment:
            MYSQL_DATABASE: laravel
            MYSQL_ROOT_PASSWORD: your_mysql_root_password
            SERVICE_TAGS: dev
            SERVICE_NAME: mysql
        volumes:
            - dbdata:/var/lib/mysql/
            - ./mysql/my.cnf:/etc/mysql/my.cnf
        networks:
            - app-network

 #Docker Networks
    networks:
        app-network:
            driver: bridge
#Volumes
    volumes:
        dbdata:
            driver: local
9, thì sau khi bạn cài đặt xong các câu lệnh đó sẽ được sử dụng như sau

$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
3

8. Tạo tài khoản trong Mysql

Để tạo tài khoản mới, chúng ta cần tương tác với Container____20_______0 bằng câu lệnh

FROM php:8.0-fpm
 #Copy composer.lock and composer.json
 COPY composer.lock composer.json /var/www/
 #Set working directory
 WORKDIR /var/www
 #Install dependencies
 RUN apt-get update && apt-get install -y 
     build-essential 
     libpng-dev 
     libjpeg62-turbo-dev 
     libfreetype6-dev 
     locales 
     zip 
     jpegoptim optipng pngquant gifsicle 
     vim 
     unzip 
     git 
     curl

 #Clear cache

 RUN apt-get clean && rm -rf /var/lib/apt/lists/*
 #Install extensions
 RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
 RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ 
 RUN docker-php-ext-install gd
 #Install composer
 RUN curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
 #Add user for laravel application
 RUN groupadd -g 1000 username
 RUN useradd -u 1000 -ms /bin/bash -g username username
 #Copy existing application directory contents
 COPY . /var/www
 #Copy existing application directory permissions
 COPY --chown=username:username . /var/www
 #Change current user to username
 USER username
 EXPOSE 9000
 CMD ["php-fpm"]
1

Bên trong Container, đăng nhập bằng tài khoản quản trị

FROM php:8.0-fpm
 #Copy composer.lock and composer.json
 COPY composer.lock composer.json /var/www/
 #Set working directory
 WORKDIR /var/www
 #Install dependencies
 RUN apt-get update && apt-get install -y 
     build-essential 
     libpng-dev 
     libjpeg62-turbo-dev 
     libfreetype6-dev 
     locales 
     zip 
     jpegoptim optipng pngquant gifsicle 
     vim 
     unzip 
     git 
     curl

 #Clear cache

 RUN apt-get clean && rm -rf /var/lib/apt/lists/*
 #Install extensions
 RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
 RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ 
 RUN docker-php-ext-install gd
 #Install composer
 RUN curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
 #Add user for laravel application
 RUN groupadd -g 1000 username
 RUN useradd -u 1000 -ms /bin/bash -g username username
 #Copy existing application directory contents
 COPY . /var/www
 #Copy existing application directory permissions
 COPY --chown=username:username . /var/www
 #Change current user to username
 USER username
 EXPOSE 9000
 CMD ["php-fpm"]
2Mysql

FROM php:8.0-fpm
 #Copy composer.lock and composer.json
 COPY composer.lock composer.json /var/www/
 #Set working directory
 WORKDIR /var/www
 #Install dependencies
 RUN apt-get update && apt-get install -y 
     build-essential 
     libpng-dev 
     libjpeg62-turbo-dev 
     libfreetype6-dev 
     locales 
     zip 
     jpegoptim optipng pngquant gifsicle 
     vim 
     unzip 
     git 
     curl

 #Clear cache

 RUN apt-get clean && rm -rf /var/lib/apt/lists/*
 #Install extensions
 RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
 RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ 
 RUN docker-php-ext-install gd
 #Install composer
 RUN curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
 #Add user for laravel application
 RUN groupadd -g 1000 username
 RUN useradd -u 1000 -ms /bin/bash -g username username
 #Copy existing application directory contents
 COPY . /var/www
 #Copy existing application directory permissions
 COPY --chown=username:username . /var/www
 #Change current user to username
 USER username
 EXPOSE 9000
 CMD ["php-fpm"]
3

Tiếp theo, ta tạo người dùng và gán quyền truy cập vào cơ sở dữ liệu vừa tạo

$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
4

To exit from Container, gõ lệnh.

FROM php:8.0-fpm
 #Copy composer.lock and composer.json
 COPY composer.lock composer.json /var/www/
 #Set working directory
 WORKDIR /var/www
 #Install dependencies
 RUN apt-get update && apt-get install -y 
     build-essential 
     libpng-dev 
     libjpeg62-turbo-dev 
     libfreetype6-dev 
     locales 
     zip 
     jpegoptim optipng pngquant gifsicle 
     vim 
     unzip 
     git 
     curl

 #Clear cache

 RUN apt-get clean && rm -rf /var/lib/apt/lists/*
 #Install extensions
 RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
 RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ 
 RUN docker-php-ext-install gd
 #Install composer
 RUN curl -sS //getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
 #Add user for laravel application
 RUN groupadd -g 1000 username
 RUN useradd -u 1000 -ms /bin/bash -g username username
 #Copy existing application directory contents
 COPY . /var/www
 #Copy existing application directory permissions
 COPY --chown=username:username . /var/www
 #Change current user to username
 USER username
 EXPOSE 9000
 CMD ["php-fpm"]
4

Các bạn hãy kiểm tra kết nối bằng lệnh này nhé

$ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
5

Cuối cùng, hãy thử duyệt lại trình duyệt của bạn bằng cách lên trình duyệt đã nhập. http. //ip_server, nếu bạn dùng port khác 80 thì hãy. cổng sau ip_server nhé. Chúc mọi người thành công

Tổng kết

Trong bài viết này, mình đã hướng dẫn các bạn cài đặt Docker trên Ubuntu và thiết lập Laravel, Nginx và Mysql với Docker Compose theo cách hiểu của mình. Mình rất mong nhận được sự góp ý của các bạn qua phần comment bên dưới nhé. Cảm ơn các bạn đã lắng nghe bài chia sẻ của mình

Tài liệu tham khảo

https. // tài liệu. người đóng tàu. com/engine/install/ubuntu/https. //www. kỹ thuật số. com/cộng đồng/tutorials/how-to-set-up-laravel-nginx-and-mysql-with-docker-compose

Chủ Đề