FROM ubuntu:24.04 RUN apt-get update -y RUN apt-get upgrade -y RUN apt-get install -y apache2 curl unzip wget xz-utils net-tools procps gnupg RUN apt-get install -y \ php8.3 \ php8.3-fpm \ php8.3-cli \ php8.3-common \ php8.3-mbstring \ php8.3-xml \ php8.3-mysql \ php8.3-pgsql \ php8.3-sqlite3 \ php8.3-zip \ php8.3-curl \ php8.3-gd \ php8.3-intl #-------- php-fpm ENV php_conf /etc/php/8.3/fpm/php-fpm.conf ENV fpm_conf /etc/php/8.3/fpm/pool.d/www.conf ENV php_vars /etc/php/8.3/fpm/conf.d/docker-vars.ini ADD www.conf ${fpm_conf} #RUN echo "cgi.fix_pathinfo=0" > ${php_vars} &&\ # echo "upload_max_filesize = 100M" >> ${php_vars} &&\ # echo "post_max_size = 100M" >> ${php_vars} &&\ # echo "variables_order = \"EGPCS\"" >> ${php_vars} && \ # echo "memory_limit = 128M" >> ${php_vars} && \ # sed -i \ # -e "s/;catch_workers_output\s*=\s*yes/catch_workers_output = yes/g" \ # -e "s/pm.max_children = 5/pm.max_children = 4/g" \ # -e "s/pm.start_servers = 2/pm.start_servers = 3/g" \ # -e "s/pm.min_spare_servers = 1/pm.min_spare_servers = 2/g" \ # -e "s/pm.max_spare_servers = 3/pm.max_spare_servers = 4/g" \ # -e "s/;pm.max_requests = 500/pm.max_requests = 200/g" \ # -e "s/user = www-data/user = nginx/g" \ # -e "s/group = www-data/group = nginx/g" \ # -e "s/;listen.mode = 0660/listen.mode = 0666/g" \ # -e "s/;listen.owner = www-data/listen.owner = nginx/g" \ # -e "s/;listen.group = www-data/listen.group = nginx/g" \ # -e "s/listen = 127.0.0.1:9000/listen = \/var\/run\/php-fpm.sock/g" \ # -e "s/^;clear_env = no$/clear_env = no/" \ # ${fpm_conf} # ------------ ngnix USER root RUN apt-get install --reinstall ca-certificates RUN update-ca-certificates RUN apt-get install -y nginx && \ rm -rf /var/lib/apt/lists/* RUN mkdir -p /run/php && \ mkdir -p /var/www/html && \ mkdir -p /etc/nginx/sites-available/ && \ chmod -R 777 /var/www/html && \ chmod -R 777 /run/php RUN chmod -R 777 /var/lib ENV nginx_vhost /etc/nginx/sites-available/default ENV php_conf /etc/php/8.3/fpm/php.ini ENV nginx_conf /etc/nginx/nginx.conf # ---------------------- # Enable php-fpm on nginx virtualhost configuration ADD default ${nginx_vhost} #RUN sed -i -e 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' ${php_conf} && \ # echo "\ndaemon off;" >> ${nginx_conf} # php-xml php-dom php-pdo php-mysql RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'c8b085408188070d5f52bcfe4ecfbee5f727afa458b2573b8eaaf77b3419b0bf2768dc67c86944da1544f06fa544fd47') { echo 'Installer verified'.PHP_EOL; } else { echo 'Installer corrupt'.PHP_EOL; unlink('composer-setup.php'); exit(1); }" RUN php composer-setup.php RUN php -r "unlink('composer-setup.php');" RUN mv composer.phar /usr/local/bin/composer #RUN wget https://nodejs.org/dist/v20.17.0/node-v20.17.0-linux-x64.tar.xz #RUN chmod 777 /node-v20.17.0-linux-x64.tar.xz #RUN tar -xf '/node-v20.17.0-linux-x64.tar.xz' #RUN cp -r /node-v20.17.0-linux-x64/bin /node-v20.17.0-linux-x64/include /node-v20.17.0-linux-x64/lib /node-v20.17.0-linux-x64/share /usr/ #--------------------- ENV GOSU_VERSION 1.17 RUN set -eux; \ savedAptMark="$(apt-mark showmanual)"; \ apt-get update; \ apt-get install -y --no-install-recommends ca-certificates wget; \ rm -rf /var/lib/apt/lists/*; \ dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \ wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \ wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \ export GNUPGHOME="$(mktemp -d)"; \ gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \ gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \ gpgconf --kill all; \ rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \ apt-mark auto '.*' > /dev/null; \ [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ chmod +x /usr/local/bin/gosu; \ gosu --version; \ gosu nobody true RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends \ bzip2 \ openssl \ # FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db: # File::Basename # File::Copy # Sys::Hostname # Data::Dumper perl \ xz-utils \ zstd \ ; \ rm -rf /var/lib/apt/lists/* RUN set -eux; \ # pub rsa4096 2023-10-23 [SC] [expires: 2025-10-22] # BCA4 3417 C3B4 85DD 128E C6D4 B7B3 B788 A8D3 785C # uid [ unknown] MySQL Release Engineering # sub rsa4096 2023-10-23 [E] [expires: 2025-10-22] key='BCA4 3417 C3B4 85DD 128E C6D4 B7B3 B788 A8D3 785C'; \ export GNUPGHOME="$(mktemp -d)"; \ gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \ mkdir -p /etc/apt/keyrings; \ gpg --batch --export "$key" > /etc/apt/keyrings/mysql.gpg; \ gpgconf --kill all; \ rm -rf "$GNUPGHOME" # Cập nhật và cài đặt MySQL RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server RUN rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \ && chmod 1777 /var/run/mysqld /var/lib/mysql VOLUME /var/lib/mysql # Sao chép file cấu hình MySQL COPY mysql.cnf /etc/mysql/my.cnf # Đặt mật khẩu root MySQL thông qua debconf ENV MYSQL_ROOT_PASSWORD sa ENV MYSQL_DATABASE=hotel_booking RUN echo "mysql-server mysql-server/root_password password sa" | debconf-set-selections && \ echo "mysql-server mysql-server/root_password_again password sa" | debconf-set-selections #--------------------- ENV APP_ENV production ENV APP_DEBUG false ENV LOG_CHANNEL stderr ENV APP_KEY base64:qKieeboLsDmpW8qISpXunQoiPW2iyBr5/whnGIstu1A= RUN mkdir -p /var/firecomic USER root COPY . /var/firecomic/ RUN chown -R ubuntu:ubuntu /var/firecomic RUN chmod -R 777 /var/firecomic/storage/logs RUN chown -R ubuntu:ubuntu /var/firecomic/storage/logs RUN touch /var/firecomic/storage/logs/laravel.log RUN chmod -R 777 /var/firecomic/storage/logs/laravel.log RUN chown -R ubuntu:ubuntu /var/firecomic/storage/logs/laravel.log RUN chmod -R 777 /var/firecomic/storage RUN chown -R ubuntu:ubuntu /var/firecomic/storage RUN chown -R ubuntu:ubuntu /var/firecomic/storage/framework RUN mkdir -p /var/firecomic/public/gmail/tokens RUN chmod -R 777 /var/firecomic/public RUN chown -R ubuntu:ubuntu /var/firecomic/public RUN chmod -R 777 /var/firecomic/public/gmail RUN chown -R ubuntu:ubuntu /var/firecomic/public/gmail RUN chmod -R 777 /var/firecomic/public/gmail/tokens RUN chown -R ubuntu:ubuntu /var/firecomic/public/gmail/tokens RUN chmod -R 777 /var/firecomic # chown -R ubuntu:ubuntu /var/firecomic RUN chmod -R 777 /var/firecomic/storage # chown -R ubuntu:ubuntu /var/firecomic/storage RUN chmod -R 777 /var/firecomic/storage/logs # chown -R ubuntu:ubuntu /var/firecomic/storage/logs RUN chmod -R 777 /var/firecomic/storage/app # chown -R ubuntu:ubuntu /var/firecomic/storage/app #RUN composer create-project laravel/laravel example-app #RUN cd example-app #WORKDIR /example-app #RUN ls -la #RUN chmod 706 -R /example-app/bootstrap/cache #RUN chmod 760 -R /example-app/storage #RUN chmod 706 /example-app/database/database.sqlite #RUN chown -R ubuntu:ubuntu /example-app #RUN apt-get install -y mariadb-server sudo #RUN usermod -aG sudo ubuntu #USER root:root #RUN sudo service mariadb start; service --status-all ADD start.sh /start.sh RUN mkdir /docker-entrypoint-initdb.d ADD docker-entrypoint.sh /docker-entrypoint.sh ADD hotel_booking.sql /docker-entrypoint-initdb.d/ ADD docker-entrypoint.sh /usr/local/bin/ USER root #RUN chown ubuntu:ubuntu /run/php/php8.3-fpm.sock #RUN chmod -R 777 /run/php/php8.3-fpm.sock RUN chmod +x /usr/local/bin/docker-entrypoint.sh RUN chmod +x /start.sh RUN chmod -R 777 /var/www RUN chmod -R 777 /var/run RUN chmod -R 777 /run/mysqld RUN chmod -R 777 /run/php RUN chmod -R 777 /var/lib/mysql RUN chmod -R 777 /var/log EXPOSE 7860 CMD ["/start.sh"]