我是Docker的新手,所以这对你来说可能非常基础,但现在它让我感到恐慌。
我决定在容器上开发一个新的Web项目,当然我想到了Docker。在完成教程和阅读一些Dockerfile之后,我决定使用docker-compose。
我想要多个compose文件,一个用于开发,一个用于生产等等。现在,我成功地通过3个不同的服务编排了一个基本的php/mysql/redis应用程序。主要的应用程序是基于php的,并且在项目src中进行维护。Mysql和Redis仅使用基本映像配置,并且不需要任何业务逻辑。
我可以使用以下命令构建容器并启动它们:
build:
docker-compose -f compose-Development.yml build
上升:
docker-compose -f compose-Development.yml up
主应用程序容器中的许多文件都是通过gulp(模板、css等)构建的,并且代码将存在于javascript和php中。
我注意到,当我更改文件时,我的应用程序状态不会改变。我必须重新构建并重新启动容器。
有了对Vagrant的一些经验,我会在开发过程中使用某种共享源。但我该如何实现呢?
我的应用程序Dockerfile(用于开发)如下所示:
FROM webdevops/php-nginx:7.1
COPY ./ /app
COPY docker/etc/ /opt/docker/etc
# php config...
RUN ln -sf /opt/docker/etc/php/php.Development.ini /opt/docker/etc/php/php.ini
WORKDIR /app/
EXPOSE 80
编排文件:
version: "3"
services:
app:
build:
context: .
dockerfile: Dockerfile.Development
links:
- mysql
- redis
volumes:
- ./data/fileadmin:/app/public/fileadmin
- ./data/uploads:/app/public/uploads
env_file:
- docker/env/All.yml
- docker/env/Development.yml
ports:
- "80:80"
restart: always
# Mysql Container
mysql:
build:
context: docker/mysql/
dockerfile: Dockerfile
restart: always
volumes:
- mysql:/var/lib/mysql
env_file:
- docker/env/All.yml
- docker/env/Development.yml
# Cache Backend Container
redis:
build:
context: docker/redis/
dockerfile: Dockerfile
ports:
- "6379:6379"
volumes:
- redis:/data
env_file:
- docker/env/All.yml
- docker/env/Development.yml
restart: always
volumes:
mysql:
redis:
到目前为止,我使用了一些Github仓库来复制一些代码段。我知道在我的设置中可能还存在其他问题,但是目前最阻碍我的问题是与链接/复制源相关的问题。
敬礼, 菲利普