-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
85 lines (71 loc) · 3.75 KB
/
Dockerfile
File metadata and controls
85 lines (71 loc) · 3.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
FROM php:8.2-apache
ENV WWWROOT_DIR /var/www/html/
WORKDIR $WWWROOT_DIR
# change repo location to china
RUN sed -i -E 's!http://deb.debian.org!http://ftp.cn.debian.org!g' /etc/apt/sources.list.d/debian.sources \
&& sed -i -E 's!http://security.debian.org!http://ftp.cn.debian.org!g' /etc/apt/sources.list.d/debian.sources
# install common unity for debug: vi cron ping netstat nc
RUN apt-get update \
&& apt-get install -y vim \
&& apt-get install -y cron \
&& apt-get install -y iputils-ping \
&& apt-get install -y net-tools \
&& apt-get install -y dnsutils \
&& apt-get install -y logrotate \
&& apt-get install -y unzip \
&& apt-get install -y supervisor \
&& apt-get install -y rsyslog \
&& apt-get install -y libgmp-dev \
&& apt-get install -y libuv1-dev \
&& apt-get install -y libzip-dev \
&& apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
&& apt-get clean
# install php composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# install php extension
RUN docker-php-ext-install pdo_mysql \
&& docker-php-ext-install zip \
&& docker-php-ext-install -j$(nproc) iconv \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install bcmath \
&& pecl install xdebug \
&& pecl install redis && docker-php-ext-enable redis \
&& docker-php-ext-install sockets \
&& docker-php-ext-install gmp \
&& pecl install uv-beta && docker-php-ext-enable uv \
&& docker-php-ext-install pcntl
# modify apache config: adjust wwwroot, enable rewrite
RUN echo "##add by docker\nexport APACHE2_WWWROOT_DIR='$WWWROOT_DIR'" >> /etc/apache2/envvars \
&& cd /etc/apache2/mods-enabled/ \
&& ln -s ../mods-available/rewrite.load rewrite.load \
&& ln -s ../mods-available/headers.load headers.load
# allow .htaccess file
RUN sed -i -E 's!/var/www!/var/www/html/public!g' /etc/apache2/apache2.conf \
&& sed -i -E 's!AllowOverride None!AllowOverride All!' /etc/apache2/apache2.conf \
&& sed -i -E 's!/var/www/html!/var/www/html/public!g' /etc/apache2/sites-enabled/000-default.conf
# change php.ini file
RUN mv /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
&& sed -i -E 's!upload_max_filesize = 2M!upload_max_filesize = 20M!' /usr/local/etc/php/php.ini \
&& sed -i -E 's!post_max_size = 8M!post_max_size = 20M!' /usr/local/etc/php/php.ini \
&& sed -i -E 's!;date.timezone =!date.timezone = Asia/Shanghai!' /usr/local/etc/php/php.ini \
&& sed -i -E 's!expose_php = On!expose_php = Off!' /usr/local/etc/php/php.ini
# change systerm timezone
RUN rm /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# add files
COPY . $WWWROOT_DIR
RUN chown www-data:www-data -R ${WWWROOT_DIR}storage
# 提供可供访问的静态文件配置,方案1, @see https://laravel.com/docs/6.x/filesystem#file-urls
# 需要解决Alias目录403问题
RUN echo "<Directory /var/www/html/storage/app/public>" >> /etc/apache2/apache2.conf \
&& echo " Options Indexes FollowSymLinks" >> /etc/apache2/apache2.conf \
&& echo " AllowOverride All" >> /etc/apache2/apache2.conf \
&& echo " Require all granted" >> /etc/apache2/apache2.conf \
&& echo "</Directory>" >> /etc/apache2/apache2.conf
# 提供可供访问的静态文件配置, 方案2, @see https://laravel.com/docs/6.x/filesystem#file-urls
# RUN ln -s $WWWROOT_DIR/storage/app $WWWROOT_DIR/public/storage
# multi service in container @see https://docs.docker.com/config/containers/multi-service_container/
# multi service user supervisor
COPY docker-supervisord.conf /etc/supervisor/conf.d/supervisord.conf
RUN mv ./docker-entrypoint.sh /
CMD /docker-entrypoint.sh