Docker-compose 自动安装 wkhtmltopdf
Docker-compose automate installations for wkhtmltopdf
我正在使用 docker 开发一个 symfony 项目,为了能够在该项目中生成 PDF 文件,我需要安装 SnappyBundle https://github.com/KnpLabs/KnpSnappyBundle。生成pdf文件还需要安装wkhtmltopdf
这就是我所做的:
我以 root 身份连接到我的应用程序容器
docker exec -u root -t -i container_id /bin/bash
然后我安装了两个包
apt-get update
apt-get install wkhtmltopdf
apt-get install xvfb
然后我更改了 config.yml 文件以使用 xvfb
执行 wkhtmltopdf
这种方式可行,但有没有一种方法可以使用我的 docker-compose 简单地自动安装这些软件包?
version: '2'
networks:
community:
external: true
services:
app:
build: docker/php72
working_dir: /var/www/app
networks:
community:
aliases:
- app
default:
aliases:
- app.myapp
volumes:
- .:/var/www/app
- ~/.composer:/var/www/.composer
dns:
- X.X.X.X
- X.X.X.X
- X.X.X.X
- X.X.X.X
web:
image: nginx:1-alpine
working_dir: /var/www/app
networks:
myapp:
aliases:
- app
default:
aliases:
- app.myapp
volumes:
- ./docker/nginx/app.conf:/etc/nginx/conf.d/default.conf:ro
- .:/var/www/app
- ./var/logs/nginx/:/var/log/nginx
expose:
- 80
depends_on:
- app
dns:
- X.X.X.X
- X.X.X.X
- X.X.X.X
- X.X.X.X
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: XXXX
MYSQL_USER: XXXX
MYSQL_PASSWORD: XXXX
MYSQL_DATABASE: XXXX
ports:
- "3306:3306"
networks:
community:
aliases:
- bdd
default:
aliases:
- bdd.myapp
dns:
- X.X.X.X
- X.X.X.X
- X.X.X.X
- X.X.X.X
我的 docker-compose 看起来像这样(我隐藏了一些信息)
在与 docker-compose.yml
相同的位置创建一个名为 Dockerfile
的文件。
这应该是您的 docker 文件的内容:
FROM docker/php72
RUN apt-get update && apt-get install -y wkhtmltopdf xvfb
然后将您的 docker-compose 应用服务更改为:
app:
build: .
然后 运行 docker-compose build
,您将使用所需的依赖项构建一个新的 docker 映像,并从那里 运行 应用程序。
此外,快速提示:docker-compose exec service_name bash
与 docker exec -t -i container_id /bin/bash
相同
我正在使用 docker 开发一个 symfony 项目,为了能够在该项目中生成 PDF 文件,我需要安装 SnappyBundle https://github.com/KnpLabs/KnpSnappyBundle。生成pdf文件还需要安装wkhtmltopdf
这就是我所做的:
我以 root 身份连接到我的应用程序容器
docker exec -u root -t -i container_id /bin/bash
然后我安装了两个包
apt-get update
apt-get install wkhtmltopdf
apt-get install xvfb
然后我更改了 config.yml 文件以使用 xvfb
执行 wkhtmltopdf这种方式可行,但有没有一种方法可以使用我的 docker-compose 简单地自动安装这些软件包?
version: '2'
networks:
community:
external: true
services:
app:
build: docker/php72
working_dir: /var/www/app
networks:
community:
aliases:
- app
default:
aliases:
- app.myapp
volumes:
- .:/var/www/app
- ~/.composer:/var/www/.composer
dns:
- X.X.X.X
- X.X.X.X
- X.X.X.X
- X.X.X.X
web:
image: nginx:1-alpine
working_dir: /var/www/app
networks:
myapp:
aliases:
- app
default:
aliases:
- app.myapp
volumes:
- ./docker/nginx/app.conf:/etc/nginx/conf.d/default.conf:ro
- .:/var/www/app
- ./var/logs/nginx/:/var/log/nginx
expose:
- 80
depends_on:
- app
dns:
- X.X.X.X
- X.X.X.X
- X.X.X.X
- X.X.X.X
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: XXXX
MYSQL_USER: XXXX
MYSQL_PASSWORD: XXXX
MYSQL_DATABASE: XXXX
ports:
- "3306:3306"
networks:
community:
aliases:
- bdd
default:
aliases:
- bdd.myapp
dns:
- X.X.X.X
- X.X.X.X
- X.X.X.X
- X.X.X.X
我的 docker-compose 看起来像这样(我隐藏了一些信息)
在与 docker-compose.yml
相同的位置创建一个名为 Dockerfile
的文件。
这应该是您的 docker 文件的内容:
FROM docker/php72
RUN apt-get update && apt-get install -y wkhtmltopdf xvfb
然后将您的 docker-compose 应用服务更改为:
app:
build: .
然后 运行 docker-compose build
,您将使用所需的依赖项构建一个新的 docker 映像,并从那里 运行 应用程序。
此外,快速提示:docker-compose exec service_name bash
与 docker exec -t -i container_id /bin/bash