首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Docker文件错误将文件从主机复制到Docker容器

使用Docker文件错误将文件从主机复制到Docker容器
EN

Stack Overflow用户
提问于 2019-08-30 11:39:23
回答 2查看 510关注 0票数 1

我是码头新来的。我知道外面有很多答案。我尝试了这个链接host to container,但我不能解决我的问题。我正在为WordPress创建一个带有WordPress cli映像的对接器。

下面是:

代码语言:javascript
复制
version: '3.1'

services:
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - wordpress_files:/var/www/html
     ports:
       - "8080:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: user
       WORDPRESS_DB_PASSWORD: password
       WORDPRESS_DB_NAME: wordpressdb

   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_RANDOM_ROOT_PASSWORD: 1
       MYSQL_DATABASE: wordpressdb
       MYSQL_USER: user
       MYSQL_PASSWORD: password

volumes:
    wordpress_files:
    db_data:

在上面的代码中,我使用了一个官方的WordPress映像,它与MySQL连接,并成功地创建了它。接下来,我想在那个WordPress映像中安装WordPress cli。下面是我找到的安装WordPress cli的命令。

代码语言:javascript
复制
echo "Installing WP-CLI"  
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar /usr/local/bin/wp

我以直接的方式尝试将上面的命令放在Docker文件的命令部分。但失败了。因此,我在主机中保存了install.sh文件中的内容。

接下来,我希望将该文件传输到WordPress映像,该文件应该在安装WordPress映像后触发,并且应该使用该文件在该映像中安装cli

在这里,我修改的代码:

代码语言:javascript
复制
version: '3.1'

services:
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
       - wordpress_files:/var/www/html
     ports:
       - "8080:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: user
       WORDPRESS_DB_PASSWORD: password
       WORDPRESS_DB_NAME: wordpressdb
     COPY /files/install.sh  /var/www/html/   =>modified
     command:                                 =>modified
       /var/www/html/files/install.sh         =>modified
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_RANDOM_ROOT_PASSWORD: 1
       MYSQL_DATABASE: wordpressdb
       MYSQL_USER: user
       MYSQL_PASSWORD: password

volumes:
    wordpress_files:
    db_data:

错误:

代码语言:javascript
复制
ERROR: yaml.scanner.ScannerError: while scanning a simple key
  in "./word_press_docker_file.yml", line 18, column 6
could not find expected ':'
  in "./word_press_docker_file.yml", line 19, column 6

但还是失败了。我尝试了几个堆栈溢出的答案,但无法弄清楚。我尝试了COPY命令,但失败了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-30 12:02:08

实现这一目标的一种方法是通过Dockerfile。

您的案例的示例Dockerfile可能如下所示:

代码语言:javascript
复制
FROM wordpress:latest
RUN cd /tmp && echo "Installing WP-CLI" && curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && chmod +x wp-cli.phar && mv wp-cli.phar /usr/local/bin/wp

然后,您可以将其构建为新的自定义映像,并在YAML文件中使用。

编辑:

不再允许使用本地图像。因此,您可以使用docker标记命令标记图像,然后在YAML文件中使用。

您可以在这里阅读更多关于这一点的信息:best-practices/

这里提到的另一种方法是:/wordpress/

代码语言:javascript
复制
This image variant does not contain WordPress itself, but instead contains WP-CLI.

The simplest way to use it with an existing WordPress container would be something similar to the following:

$ docker run -it --rm \
    --volumes-from some-wordpress \
    --network container:some-wordpress \
    wordpress:cli user list

Generally speaking, for WP-CLI to interact with a WordPress install, it needs access to the on-disk files of the WordPress install, and access to the database (and the easiest way to accomplish that such that wp-config.php does not require changes is to simply join the networking context of the existing and presumably working WordPress container, but there are many other ways to accomplish that which will be left as an exercise for the reader).
票数 1
EN

Stack Overflow用户

发布于 2019-08-30 12:02:07

可以尝试使用RUN指令,如下所示:

代码语言:javascript
复制
RUN echo "Installing WP-CLI" \
&& curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \
&& chmod +x wp-cli.phar \
&& mv wp-cli.phar /usr/local/bin/wp
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57726062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档