Bonjour à tous,
je m'interroge sur les bonnes pratiques concernant l'architecture devops de mon projet symfony.
j'ai un projet symfony et dans ce projet , j'ai un dossier .docker qui contient plusieurs choses.
voici l'architecture du dossier .docker
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 . . ├── .env ├── .env.example ├── docker-compose-dev.yml ├── docker-compose-prod.yml ├── mariadb │** └── Dockerfile ├── nginx │** ├── Dockerfile │** ├── Dockerfile_ci │** ├── dev │** │** └── default.conf │** └── prod │** └── default.conf └── php ├── Dockerfile ├── dev │** └── php.ini ├── entrypoint.prod.sh ├── entrypoint.sh └── prod └── php.ini
Voici mon docker-compose de production qui est build dans ma CI
Code:
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 services: db: build: context: mariadb image: registry.mydomain.com/projet/db:latest restart: always volumes: - datadb:/var/lib/mysql ports: - "3306:3306" environment: MARIADB_USER: ${MYSQL_USER} MARIADB_PASSWORD: ${MYSQL_PASSWORD} MARIADB_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MARIADB_DATABASE: ${MYSQL_DATABASE} networks: - shared_corporate nginx: build: context: .. dockerfile: .docker/nginx/Dockerfile_ci args: MODE: ${MODE:-prod} image: registry.mydomain.com/projet/nginx:latest restart: always ports: - 80:80 depends_on: - phpfpm - db networks: - shared_corporate phpfpm: build: context: .. dockerfile: .docker/php/Dockerfile args: TIMEZONE: ${TIMEZONE} MODE: ${MODE:-prod} container_name: php_entreprise image: registry.mydomain.com/projet/php:latest restart: always networks: - shared_corporate environment: APP_ENV: prod volumes: apache_log: datadb: networks: shared_corporate: name: shared_corporate
mon dockerfile pour php FPM
et voici mon nginx : qui est plutot très simpleCode:
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 FROM php:8.4.10-fpm-bookworm ARG TIMEZONE ARG MODE COPY .docker/php/${MODE}/php.ini /usr/local/etc/php/conf.d/docker-php-config.ini RUN apt-get update && apt-get install -y \ gnupg \ g++ \ procps \ openssl \ git \ unzip \ zlib1g-dev \ libzip-dev \ libfreetype6-dev \ libpng-dev \ libjpeg-dev \ libicu-dev \ libonig-dev \ libxslt1-dev \ libpq-dev \ acl \ && echo 'alias sf="php bin/console"' >> ~/.bashrc RUN docker-php-ext-configure intl #RUN docker-php-ext-configure gd --with-jpeg --with-freetype #RUN docker-php-ext-install \ # pdo pdo_mysql zip xsl gd intl opcache exif mbstring intl RUN docker-php-ext-install \ pdo pdo_mysql zip xsl intl opcache exif mbstring intl RUN pecl install apcu && docker-php-ext-enable apcu RUN pecl install redis && docker-php-ext-enable redis # Set timezone RUN ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo ${TIMEZONE} > /etc/timezone \ && printf '[PHP]\ndate.timezone = "%s"\n', ${TIMEZONE} > /usr/local/etc/php/conf.d/tzone.ini \ && "date" RUN printf '[intl]\nintl.default_locale = fr\n' > /usr/local/etc/php/conf.d/intl.ini RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer COPY . /tmp/symfony RUN ls -la /tmp/symfony RUN if [ "$MODE" = "prod" ]; then \ mkdir -p /var/www/symfony && \ cp -ar /tmp/symfony/. /var/www/symfony && \ chown -R www-data:www-data /var/www/symfony; \ fi WORKDIR /var/www/symfony COPY .docker/php/entrypoint.sh /usr/local/bin/entrypoint.sh COPY .docker/php/entrypoint.prod.sh /usr/local/bin/entrypoint.prod.sh RUN chmod +x /usr/local/bin/entrypoint.sh /usr/local/bin/entrypoint.prod.sh ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
Selon vous, que-ce qui doit être modifier pour respecter les bonnes pratiques ?Code:
1
2 FROM nginx:latest AS base EXPOSE 80