docker - 在 Dockerfile 中下载并解压文件
问题描述
我对 Docker 比较陌生,并试图设置一台具有 nginx、MariaDB 和 PHP-fpm 的机器。到目前为止,大多数事情似乎都有效,除了一个:在执行期间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
我想,它与容器的移除有关,因为它已经完成了?
码头工人-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"
解决方案
推荐阅读
- django-rest-framework - 我对注册人的序列化程序有疑问
- android - 如何制作通用文本大小以在 Android 中显示?
- sql-server - 是否需要从字符串转换为十进制,如果需要,应该如何完成?
- flutter - 如何从 Flutter 应用程序在 Instagram 提要上发布链接?
- html - 使用 after 伪选择器显示图标
- html - 从 html 的基本文本中剪切粘贴元素
- node.js - 如何将基本身份验证标头添加到表单
- python - Python:从 csv 解析未命名的列
- raft - 筏子追随者是否应该在收到更高期限的投票请求时更新期限?
- cmake - Android cmake子目录依赖api 21