我有一个开发环境,我是dockerizing,我希望能够重新生成我的更改,而无需重建docker镜像.我正在使用docker compose,因为redis是我应用程序的依赖项之一,我喜欢能够链接redis容器
我有两个容器定义docker-compose.yml:
node:
build: ./node
links:
- redis
ports:
- "8080"
env_file:
- node-app.env
redis:
image: redis
ports:
- "6379"
Run Code Online (Sandbox Code Playgroud)
我已经在我的node应用程序的dockerfile中添加了一个卷,但是如何在卷中安装主机的目录,以便我对代码的所有实时编辑都反映在容器中?
这是我当前的Dockerfile:
# Set the base image to Ubuntu
FROM node:boron
# File Author / Maintainer
MAINTAINER Amin Shah Gilani <amin@gilani.me>
# Install nodemon
RUN npm install -g nodemon
# Add a /app volume
VOLUME ["/app"]
# TODO: link the current . to /app
# Define working directory
WORKDIR /app
# Run npm install
RUN …Run Code Online (Sandbox Code Playgroud) 我正在运行几个容器docker-compose.我可以通过命令查看应用程序日志docker-compose logs.但是,我想访问原始日志文件,例如将其发送到某个地方?它在哪里?我猜这是每个容器(内部容器?)的单独日志,但我可以在哪里找到它?
docker compose我已经使用 Windows WSL 集成版本 2 设置了 Docker Desktop,但在执行某些命令并出现以下错误时遇到了问题
docker compose logs
no configuration file provided: not found
Run Code Online (Sandbox Code Playgroud)
但执行以下命令时并没有发现问题
docker compose up
Run Code Online (Sandbox Code Playgroud)
图像已成功构建并启动。
有没有人可以帮忙解决这个问题?
docker infoClient:
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc., v0.7.1)
compose: Docker Compose (Docker Inc., v2.2.1)
scan: Docker Scan (Docker Inc., 0.9.0)
Server:
Containers: 3
Running: 3
Paused: 0
Stopped: 0
Images: 4
Server Version: 20.10.11
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true …Run Code Online (Sandbox Code Playgroud) docker docker-compose windows-subsystem-for-linux docker-desktop
我无法弄清楚那些之间的区别.
docker-compose up
docker-compose up --build
docker-compose build --no-cache
up没有缓存有没有命令?
我想通过docker-compose构建图像并为其设置特定标记.文件说:
Compose将使用生成的名称构建并标记它,然后使用该图像.
但我找不到指定标签的方法,对于构建的图像,我总是看到'最新'标签.
我正在使用docker容器设置我的本地开发环境.docker-compose.yml如下所示
version: '2'
services:
db:
image: mongo:3
mq:
image: rabbitmq:3
api:
build: .
image: my_app/api
ports:
- "3000:3000"
links:
- db
- mq
environment:
- NODE_ENV=development
Run Code Online (Sandbox Code Playgroud)
它开始没有错误.而docker列出了3个正在运行的容器
docker-compose up -d
docker ps
e90e5a8b5d33 my_app/api "/usr/local/bin/node " 0.0.0.0:3000->3000/tcp my_app_api_1
42bfcd971b16 mongo:3 "/entrypoint.sh mongo" 27017/tcp my_app_db_1
a0685a816c47 rabbitmq:3 "/docker-entrypoint.s" 4369/tcp, 5671-5672/tcp, 25672/tcp my_app_mq_1
Run Code Online (Sandbox Code Playgroud)
但是当我尝试链接到那些从另一个容器运行容器时
docker run --link my_app_mq_1:mq --link my_app_db_1:db -it worker
Run Code Online (Sandbox Code Playgroud)
我收到错误
docker: Error response from daemon: Cannot link to /my_app_mq_1, as it does not belong to the default network.
Run Code Online (Sandbox Code Playgroud)
我也试过了 …
在我的docker-compose.yml文件中,我有以下内容.但是容器不会获取主机名值.有任何想法吗?
dns:
image: phensley/docker-dns
hostname: affy
domainname: affy.com
volumes:
- /var/run/docker.sock:/docker.sock
Run Code Online (Sandbox Code Playgroud) 我想链接2个单独的容器:
问题是PHP脚本不起作用.也许php-fpm配置不正确.这是源代码,位于我的存储库中.这是文件docker-compose.yml:
nginx:
build: .
ports:
- "80:80"
- "443:443"
volumes:
- ./:/var/www/test/
links:
- fpm
fpm:
image: php:fpm
ports:
- "9000:9000"
Run Code Online (Sandbox Code Playgroud)
和Dockerfile我使用了基于nginx的一个建立一个自定义图像:
FROM nginx
# Change Nginx config here...
RUN rm /etc/nginx/conf.d/default.conf
ADD ./default.conf /etc/nginx/conf.d/
Run Code Online (Sandbox Code Playgroud)
最后,这是我的自定义Nginx虚拟主机配置:
server {
listen 80;
server_name localhost;
root /var/www/test;
error_log /var/log/nginx/localhost.error.log;
access_log /var/log/nginx/localhost.access.log;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /index.php$is_args$args;
}
location ~ ^/.+\.php(/|$) {
fastcgi_pass 192.168.59.103:9000;
fastcgi_split_path_info …Run Code Online (Sandbox Code Playgroud) 我想使用docker-compose在"主机"网络中生成3个服务.这是我的docker-compose.yml文件:
version: '2'
services:
mysql:
image: mysql
net: "host"
nginx:
image: nginx
net: "host"
app:
image: tomcat
net: "host"
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
$ docker-compose up
[31mERROR[0m: Validation failed in file '.\docker-compose.yml', reason(s):
Unsupported config option for services.app: 'net'
Unsupported config option for services.mysql: 'net'
Unsupported config option for services.nginx: 'net'
Run Code Online (Sandbox Code Playgroud)
我在windows上使用boot2docker.
Docker和Docker-compose版本:
$ docker -v
Docker version 1.10.2, build c3959b1
$ docker-compose -version
docker-compose version 1.6.0, build cdb920a
Run Code Online (Sandbox Code Playgroud)
如果我通过使用手动运行所有服务docker run --net = "host"工作正常.
在文档中,我读到了docker-compose支持net命令:
净
网络模式.使用与docker client …
我试图为我的 Gatsby 应用程序构建我的 Docker 映像。每当我运行命令时 docker build . -t gatsbyapp,它都会给我一个错误:
failed to solve with frontend dockerfile.v0: failed to build LLB:
failed to compute cache key: "/.env" not found: not found
Run Code Online (Sandbox Code Playgroud)
同时我的 Dockerfile 如下所示:
FROM node:13
WORKDIR /app
COPY package.json .
RUN yarn global add gatsby-cli
RUN yarn install
COPY gatsby-config.js .
COPY .env .
EXPOSE 8000
CMD ["gatsby","develop","-H","0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)