Скачайте и распакуйте файл в Dockerfile - PullRequest
0 голосов
/ 18 апреля 2020

Я относительно новичок в Docker и пытаюсь настроить машину с nginx, MariaDB и PHP -pm. Пока что кажется, что большинство вещей работает, кроме одного: во время выполнения docker-compose up я хочу загрузить внешний файл и распаковать его. После успешной инициализации я хотел бы получить доступ к извлеченным файлам. Однако, если я проверяю содержимое каталога назначения, он пуст.

Мой Dockerfile:

FROM php:7.4-fpm-alpine

[...]

WORKDIR /app

RUN set -ex; \
    curl -o app.tar -fSL "https://www.example.org/app.tar"; \
    tar -xvf app.tar; \
    chown -R www-data:www-data .; \
    rm woltlab_suite.tar

CMD ["php-fpm"]

EXPOSE 9000

При запуске docker-compose up регистрируется следующее:

Step 7/10 : WORKDIR /app
 ---> Running in b5cd78d398fe
Removing intermediate container b5cd78d398fe
 ---> 8cf4da3b7f31
Step 8/10 : RUN set -ex;     curl -o app.tar -fSL "https://www.example.org/app.tar";     tar -xvf app.tar;     chown -R www-data:www-data .;     rm app.tar
 ---> Running in 8cbc64e06214
+ curl -o app.tar -fSL https://www.example.org/app.tar
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 5394k  100 5394k    0     0  47.4M      0 --:--:-- --:--:-- --:--:-- 47.4M
+ tar -xvf app.tar
file1.ext
file2.ext
file3.ext
file4.ext
file5.ext
file6.ext
file7.ext
+ chown -R www-data:www-data .
+ rm app.tar
Removing intermediate container 8cbc64e06214

Я думаю, это как-то связано с удалением контейнера, как только это будет сделано?

docker -compose.yml:

version: '3'

services:
  mariadb:
    container_name: app_mariadb
    build:
      context: ./docker/mariadb
    environment:
      - MYSQL_DATABASE=${DATABASE_NAME}
      - MYSQL_USER=${DATABASE_USER}
      - MYSQL_PASSWORD=${DATABASE_PASSWORD}
      - MYSQL_ROOT_PASSWORD=${DATABASE_ROOT_PASSWORD}
    volumes:
      - ./docker/mariadb/data:/var/lib/mysql

  php-fpm:
    container_name: app_php
    volumes:
      - ./src:/app/
    build:
      context: ./docker/php-fpm
    depends_on:
      - mariadb

  nginx:
    container_name: app_nginx
    volumes:
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./docker/nginx/sites/:/etc/nginx/sites-available
      - ./docker/nginx/conf.d/:/etc/nginx/conf.d
      - ./docker/nginx/log:/var/log/nginx/
      - ./src:/app/:ro
    build:
      context: ./docker/nginx
    depends_on:
      - php-fpm
    ports:
      - "8080:80"
      - "8443:443"
...