forked from agarwood-cloud/agarwood.cloud.oauth.provider
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
executable file
·107 lines (98 loc) · 3.7 KB
/
Dockerfile
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# @description php image base on the debian 9.x
#
# Some Information
# ------------------------------------------------------------------------------------
# @link https://hub.docker.com/_/debian/ alpine image
# @link https://hub.docker.com/_/php/ php image
# @link https://github.com/docker-library/php php dockerfiles
# @see https://github.com/docker-library/php/tree/master/7.2/stretch/cli/Dockerfile
# ------------------------------------------------------------------------------------
# @build-example docker build . -f Dockerfile -t swoft/swoft
#
FROM php:8.0
LABEL maintainer="wumahoo221@gmail.com>" version="2.0"
# --build-arg timezone=Asia/Shanghai
ARG timezone
# app env: prod pre test dev
ARG app_env=test
# default use www user
ARG work_user=www
# default APP_ENV = test
ENV APP_ENV=${app_env:-"test"} \
TIMEZONE=${timezone:-"Asia/Shanghai"} \
PHPREDIS_VERSION=5.1.0 \
SWOOLE_VERSION=4.8.1 \
COMPOSER_ALLOW_SUPERUSER=1
# Libs -y --no-install-recommends
RUN apt-get update \
&& apt-get install -y \
curl wget git zip unzip less vim procps lsof tcpdump htop openssl net-tools iputils-ping ssh \
libz-dev \
libssl-dev \
libnghttp2-dev \
libpcre3-dev \
libjpeg-dev \
libpng-dev \
libfreetype6-dev \
# uuid-dev \
libonig-dev \
libzip-dev \
# Install PHP extensions
&& docker-php-ext-install \
bcmath gd pdo_mysql mbstring sockets zip sysvmsg sysvsem sysvshm \
# Clean apt cache
&& rm -rf /var/lib/apt/lists/*
# Install composer && user Ali CDN
RUN wget https://mirrors.aliyun.com/composer/composer.phar \
# RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer \
&& chmod +x /usr/local/bin/composer \
&& composer self-update --clean-backups \
# Install redis extension
&& wget http://pecl.php.net/get/redis-${PHPREDIS_VERSION}.tgz -O /tmp/redis.tar.tgz \
&& pecl install /tmp/redis.tar.tgz \
&& rm -rf /tmp/redis.tar.tgz \
&& docker-php-ext-enable redis \
# Install uuid extension
# && wget https://pecl.php.net/get/uuid-1.2.0.tgz -O /tmp/uuid.tar.tgz \
# && pecl install /tmp/uuid.tar.tgz \
# && rm -rf /tmp/uuid.tar.tgz \
# && docker-php-ext-enable uuid \
# Install swoole extension
&& wget https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz -O swoole.tar.gz \
&& mkdir -p swoole \
&& tar -xf swoole.tar.gz -C swoole --strip-components=1 \
&& rm swoole.tar.gz \
&& ( \
cd swoole \
&& phpize \
&& ./configure --enable-mysqlnd --enable-sockets --enable-openssl --enable-http2 \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r swoole \
&& docker-php-ext-enable swoole \
# Clear dev deps
&& apt-get clean \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
# Timezone
&& cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
&& echo "${TIMEZONE}" > /etc/timezone \
&& echo "[Date]\ndate.timezone=${TIMEZONE}" > /usr/local/etc/php/conf.d/timezone.ini
## add credentials on build
# ARG SSH_PRIVATE_KEY
# RUN mkdir -p /root/.ssh/
# RUN echo "${SSH_PRIVATE_KEY}" > /root/.ssh/id_rsa
#
# # make sure your domain is accepted
# RUN touch /root/.ssh/known_hosts
# RUN ssh-keyscan gitee.com >> /root/.ssh/known_hosts
# Install composer deps
# ADD . /var/www/swoft
# RUN cd /var/www/swoft \
# && composer install --verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader \
# && composer clearcache
WORKDIR /var/www/swoft
EXPOSE 18306 18307 18308
# ENTRYPOINT ["php", "/var/www/swoft/bin/swoft", "http:start"]
# CMD ["php", "/var/www/swoft/bin/swoft", "http:start"]