我想使用Docker部署我的rails项目.所以我使用Docker-Compose.但我得到一个奇怪的错误消息.当运行docker-compose up(这包含带有postgresql的db-container,带有rails的redis和web容器)时,我得到一个
web_1 | => Booting Puma
web_1 | => Rails 4.2.4 application starting in production on http://0.0.0.0:3000
web_1 | => Runrails server -h for more startup options
web_1 | => Ctrl-C to shutdown server
web_1 | A server is already running. Check /usr/src/app/tmp/pids/server.pid.
web_1 | Exiting
所以我无法理解为什么我会收到这条消息,因为每次运行docker-compose时,新容器都会启动,而不是之前的容器.即使想要删除这些server.pid我也无法做到这一点,因为这个容器没有运行.
我的docker-compose.yml文件
web:
dockerfile: Dockerfile-rails
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
ports:
- "80:3000"
links:
- redis
- db
environment:
- REDISTOGO_URL=redis://user@redis:6379/
redis:
image: redis …Run Code Online (Sandbox Code Playgroud) 我想docker-compose在Mac OS X El Capitan(v10.11.2)上运行多容器应用程序.
但是,命令$ docker-compose up命令抱怨它无法连接到Docker守护程序.
错误:无法连接到Docker守护程序 - 您可能需要运行
docker-machine start default.
只有在执行后$ eval "$(docker-machine env default)"我才能访问该docker-compose命令.
为什么这样,我怎么能克服这个额外的步骤?
我正在尝试使用docker compose创建Nginx/PHP FPM设置,并且遇到版本3卷语法/更改的问题.
我的Dockerfile:
FROM php:7-fpm
VOLUME /var/www/html
Run Code Online (Sandbox Code Playgroud)
我的docker-compose.yml:
version: "3"
services:
php:
build: .
volumes:
- ./html:/var/www/html
web:
image: nginx
links:
- php
ports:
- "8888:80"
volumes:
- php:/var/www/html
- ./default.conf:/etc/nginx/conf.d/default.conf
volumes:
php:
Run Code Online (Sandbox Code Playgroud)
当我添加一个index.php文件时./html,我可以通过访问http:// localhost:8888来查看,但是任何静态文件(如CSS)都返回404,因为Nginx无法在其容器中找到它们(/var/www/html在nginx容器上为空).使用版本3 docker compose文件不再具有volumes_from,这基本上就是我想要复制的内容.
如何让它与版本3一起使用?
我是Docker的新手,所以我尝试使用laravel项目了解更多有关Docker的信息,并按照以下教程进行操作:
我已经根据教程中的内容对Dockerfile进行了一些调整,但是即使教程文件也会导致相同的结果。
FROM php:7.3-fpm
# Copy composer.lock and composer.json
COPY composer.lock composer.json /var/www/
# Install dependencies
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && \
apt-get update && apt-get install -y mysql-client \
RUN npm install -g npm
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install extensions
RUN docker-php-ext-install pdo pdo_mysql
# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Add user for laravel application
RUN groupadd -g 1000 www
RUN …Run Code Online (Sandbox Code Playgroud) 我有一个简单的前端和后端应用程序。我有一个 docker-compose 文件,但它位于 frontend 文件夹内。因此,当我运行它时,前端和后端容器都在前端容器下(它采用文件夹的名称),如何重命名这个主容器?我用的是3.9版本
version: "3.9"
services:
be_service:
container_name: backend
build:
context: ../backend
dockerfile: ./Dockerfile
ports:
- "8089:8080"
fe_service:
container_name: frontend
build:
context: ./
dockerfile: ./Dockerfile
ports:
- "8088:80"
depends_on:
- be_service
Run Code Online (Sandbox Code Playgroud) 我正在使用Docker容器进行Django开发,容器使用Nginx运行Gunicorn.我希望代码更改为自动加载,但我可以加载它们的唯一方法是使用docker-compose(docker-compose build)重建."build"的问题在于它会重新运行我的所有pip安装.
我正在使用Gunicorn --reload旗帜,这显然应该做我想要的.这是我的Docker配置文件:
## Dockerfile:
FROM python:3.4.3
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN pip install -r /code/requirements/docker.txt
## docker-compose.yml:
web:
restart: always
build: .
expose:
- "8000"
links:
- postgres:postgres
volumes:
- /usr/src/app/static
env_file: .env
command: /usr/local/bin/gunicorn myapp.wsgi:application -w 2 -b :8000 --reload
nginx:
restart: always
build: ./config/nginx
ports:
- "80:80"
volumes:
- /www/static
volumes_from:
- web
links:
- web:web
postgres:
restart: always
image: postgres:latest
volumes:
- /var/lib/postgresql
ports:
- "5432:5432"
Run Code Online (Sandbox Code Playgroud)
我已经尝试了其他一些Docker命令(docker-compose …
我想知道这些事情之间有什么区别.它们具有几乎相同的命令并给出相同的结果.
当我使用 运行构建时docker-compose build --progress plain,它在构建过程中显示比默认 BuildKit 输出更有用的信息。
有没有办法将简单的进度选项嵌入到 docker-compose.yml 文件本身中,这样我就可以调用docker-compose build并仍然获得更好的输出?
我尝试添加这些构建参数,但它们似乎都不起作用:
build:
args:
#progress: plain
#- progress=plain
#- progress plain
#BUILDKIT_PROGRESS: plain
#- BUILDKIT_PROGRESS=plain
Run Code Online (Sandbox Code Playgroud) 我正在尝试管理一个多容器项目。在某些时候我收到这个我不明白的错误。我尝试获取日志,但没有。
version: "3.7"
services:
api:
build: ../api
command: sh -c "rails s"
working_dir: /app
depends_on:
- database
networks:
- citrine-api
- citrine-front
ports:
- 3000:3000
volumes:
- type: bind
source: ../api
target: /app
front:
build: ../frontend
command: sh -c "yarn dev"
depends_on:
- api
networks:
- citrine-front
volumes:
- type: bind
source: ../frontend
target: /app
ports:
- 5173:5173
database:
image: keinos/sqlite3
networks:
- citrine-api
ports:
- 3306:3306
networks:
citrine-api: {}
citrine-front: {}
Run Code Online (Sandbox Code Playgroud)
strconv.Atoi:解析“”:语法无效
从本地构建的映像是简单的 dockerfile。
有人有办法纠正这个问题吗?
是否可以重用多个容器之间共享的环境变量以避免重复,如下例所示:
version: '2'
services:
db:
image: example/db
ports:
- "8443:8443"
container_name: db
hostname: db
environment:
- USER_NAME = admin
- USER_PASSWORD = admin
svc:
image: example/svc
depends_on:
- db
ports:
- "9443:9443"
container_name: svc
hostname: svc
environment:
- DB_URL = https://db:8443
- DB_USER_NAME = admin
- DB_USER_PASSWORD = admin
Run Code Online (Sandbox Code Playgroud) docker-compose ×10
docker ×9
dockerfile ×4
daemon ×1
django ×1
docker-swarm ×1
gunicorn ×1
laravel ×1
macos ×1